欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

mybatis添加记录时返回主键id

发布时间:2025/7/25 编程问答 60 豆豆
生活随笔 收集整理的这篇文章主要介绍了 mybatis添加记录时返回主键id 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

参考:mybatis添加记录时返回主键id

场景

有些时候我们在添加记录成功后希望能直接获取到该记录的主键id值,而不需要再执行一次查询操作。
在使用mybatis作为ORM组件时,可以很方便地达到这个目的。
鉴于mybatis目前已经支持xml配置和注解2种方式,所以分别给予详细介绍。

数据表设计:

drop table if exists `test`; create table `test` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', // 主键字段为自增长类型`name` varchar(50) default '',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp COMMENT '编辑时间',`descr` varchar(100) default '',`url` varchar(50) default '',PRIMARY KEY (`id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

使用xml配置方式

1.xml配置:

<!-- 插入数据:返回记录的id值 --> <insert id="insertOneTest" parameterType="org.chench.test.mybatis.model.Test" useGeneratedKeys="true" keyProperty="id" keyColumn="id">insert into test(name,descr,url,create_time,update_time) values(#{name},#{descr},#{url},now(),now()) </insert>

 

2.java代码:

Test test3 = new Test(); //test3.setId(0L); test3.setName("test6"); test3.setDescr("测试数据6"); test3.setUrl("http://www.aliyun.com.cn"); int rows = sqlSession.insert("org.chench.test.mybatis.mapper.insertOneTest", test3); sqlSession.commit(); logger.info("insert rows: {}", rows); // 执行添加记录之后读取POJO的主键id属性 logger.info("insert test id: {}", test3.getId());

 

3.详细解释
首先,为了在添加记录时能获取到记录主键id,必须在<insert>的xml配置中添加3个属性:

<insert useGeneratedKeys="true" keyProperty="id" keyColumn="id"></insert>

 

useGeneratedKeys:必须设置为true,否则无法获取到主键id。
keyProperty:设置为POJO对象的主键id属性名称。
keyColumn:设置为数据库记录的主键id字段名称。

其次,新添加主键id并不是在执行添加操作时直接返回的,而是在执行添加操作之后将新添加记录的主键id字段设置为POJO对象的主键id属性。
通过访问POJO对象的主键id属性即可返回。

使用注解方式

详见:http://www.cnblogs.com/nuccch/p/7093843.html 使用mybatis注解实现添加记录时返回主键值

转载于:https://www.cnblogs.com/thiaoqueen/p/8471637.html

总结

以上是生活随笔为你收集整理的mybatis添加记录时返回主键id的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。