mybatis添加记录时返回主键id
生活随笔
收集整理的這篇文章主要介紹了
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個屬性:
?
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深拷贝与浅拷贝、空类与空数组
- 下一篇: jquery简单使用入门