JAVA在插入自增主键的一条数据,如何同时获取该条自增的主键id?

业务场景

开发业务场景:在学生管理系统业务场景中,比如班上新来一名转校学生小吴,并参与了此次学校的摸底考试,那么系统管理员需要将他的信息更新到学生表的同时还需要和课程表绑定关系(多对多关系中需建立一个关系表)。成绩表(主要字段:student_id, sourse_id, score …)通过学生id和课程id来确定一条数据的唯一性。 所以在添加一名新学生的时候,相关的关系表也要做添加操作(小吴学了哪些课程)。

实际开发举例:


@Service
public class GroupServiceImpl implements IGroupService
{private static final Logger log = LoggerFactory.getLogger(GroupServiceImpl.class);@Autowiredprivate GroupMapper groupMapper;@Autowiredprivate IGroupUserService groupUserService;
/*
业务场景:group(分组表),user(用户表),分组用户关系表(group_user)
添加一个新的分组,分组下面可以有多个成员,一个成员可以创建多个分组,它们之间是多对多的关系,在添加一个新分组的时候,关系表也要绑定这条添加记录。因此此处有两个insert操作。新建分组是必须由当前user来新建的。所以新建的分组的时候,就得往group_user关系里填一条默认记录。
*/@Overridepublic int insertGroupInfo(Group group) {BeanUtils.initInsertProperty(group);//初始化一些字段groupMapper.insertSelective(group);//添加分组groupUserService.insertGroupUserSelective.  (newGroupUser(0,group.getId(),SecurityUtils.getLoginUser().getUser().getUserId().intValue(),SecurityUtils.getLoginUser().getUser().getRoleId().intValue(),Constants.TEAM_ROLE.LEADER));//默认添加分组成员关系表一条记录(创建分组者)return 1;}
}

代码实现

这里我们会使用mysql技术,在XXXXXmapper.xml文件中,在insert 代码位置添加如下属性:useGeneratedKeys=“true” 和 keyProperty=“id”,此处的id即为你设置的自增的主键字段

<insert id="insert" parameterType="com.demo.project.entity.Student" useGeneratedKeys="true" keyProperty="id">insert into student (id, name,sex,age)values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{age,jdbcType=VARCHAR}</insert>

在mapper映射文件添加好属性后便可在service层直接获取id

Student student=new Student();
student.setName("小吴");
studentService.insertStudent(student);//添加学生
ScoreService.insertScore(new Score(student.getId(),sourse.getId,0));//添加成绩实体,成绩默认为0分

总结

获取当前添加的数据字段自增id的值,使用mysql技术,在insert操作的时候,添加关键属性:
1. useGeneratedKeys=“true”
2. keyProperty=“id”
3. 直接在service层获取当前添加实体的id。
4. mybatisplus 默认集成了useGeneratedKeys=“true” 和 keyProperty=“id” 属性,可以直接通过getId()获取。

mysql获取自增id相关推荐

  1. MYSQL里的DBS是什么_DBS-MySQL:MYSQL获取自增ID的四种方法

    1. select max(id) from tablename 2.SELECT LAST_INSERT_ID() 函数 LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再 ...

  2. mysql 获取自增id的值的方法

    原生jdbc方式: Statement.getGeneratedKeys() 示例: Statement stmt = null; ResultSet rs = null;try {//// Crea ...

  3. mysql获取自增_mysql 获取自增id的值的方法

    原生jdbc方式: Statement.getGeneratedKeys() 示例: Statement stmt = null; ResultSet rs = null; try { // // C ...

  4. Mybatis selectKey获取自增ID(DB2/Sybase/MySQL/Oracle/达梦)

    Mybatis selectKey获取自增ID(DB2/Sybase/MySQL/Oracle/达梦) 1.selectKey 2.不同数据库写法 2.1 DB2 2.2.Sybase 2.3 MyS ...

  5. 【MyBatis使用】 mapper文件未编译 + statementType使用 + 返回结果字段顺序不一致 + 获取自增ID + 一个update标签批量更新记录

    1. mapper 文件未编译 如果mapper文件未编译,会报绑定异常. <build><resources><resource><directory> ...

  6. twisted mysql_在Twisted下用MySQLadbapi获取自增id

    D jango的ORM有一个很便捷的功能,其实也应该说是一个很基本的功能吧.就是在对一个model调用 save() 插入到数据库后,会将创建的 D jango的ORM有一个很便捷的功能,其实也应该说 ...

  7. oracle如何获取自增id,oracle实现自增id

    --oracle实现自增id --创建一张T_StudentInfo表 create table T_StudentInfo ( "id" integer not null pri ...

  8. mybatis入门学习(九) -DB环境切换、使用注解、事务提交、获取自增ID、多参数传参、鉴别器、内置参数、批量写入、Oracle字段无法插入 null 值

    一.多数据库环境切换 1.config配置: <!-- default="mydemo" 指定连接的数据库 --><environments default=&q ...

  9. 线上 MySQL 的自增 id 用尽怎么办?被面试官干趴下了!

    点击下方"Java编程鸭"关注并标星 更多精彩 第一时间直达 MySQL的自增id都定义了初始值,然后不断加步长.虽然自然数没有上限,但定义了表示这个数的字节长度,计算机存储就有上 ...

最新文章

  1. 如何限制IP,通过SSH登陆linux服务器
  2. SAP HUM 嵌套HU初探 III
  3. python中的'\b'、'\r'
  4. [C#]我自己写的一个对字节中每位进行修改值的函数
  5. Linux基础优化方法(一)———优化命令提示符和yum源仓库
  6. Java –缺少字体–崩溃的应用程序!
  7. 【机器视觉学习笔记】Hough变换直线检测(C++)
  8. 2013年4月管理计算机应用,全国2013年4月高等教育自学考试管理系统中计算机应用试题及答案...
  9. java拆分数据查相等_scikit learn:train_test_split,我可以确保在不同的数据集上进行相同的拆分...
  10. linux笔记:linux帮助命令,man,help,whatis,apropos
  11. vue -- v-cloak解决刷新或者加载出现闪烁(显示变量)
  12. linux经典书籍推荐
  13. CMD命令查看IP地址
  14. tomcat7.0安装及配置教程(win10)
  15. 腾亚幕墙 HTML 教程
  16. 深度学习硬件基础:TPU和其他芯片
  17. python为图像设置标记_Python OpenCV 图像标记,取经之旅第 12 天
  18. SNIP验证EDI文件
  19. 快门速度,光圈,感光度
  20. 运动无线耳机哪款不容易掉、最不容易脱落的蓝牙耳机推荐

热门文章

  1. 2022年Android Studio详细下载,安装使用教程
  2. javassm超市蔬菜信息管理系统
  3. 自带删除图片的DeleteImageView简单实现
  4. 2016现在开什么店最赚钱
  5. 【调剂】211云南大学2020年硕士研究生招生调剂通知
  6. 新加坡运输物流,中国到新加坡跨国集运,海运空运新加坡全境派送到您收货地址
  7. ESP-Drone四旋翼无人机控制板上的MPU6050陀螺仪芯片I2C总线测试
  8. centos查看网络速率_Centos系统在speedtest进行网速测试
  9. 科学计数法转换成数字
  10. 【有利可图网】干货!10个高大上的字体效果设计方案!