Mybatis返回插入的主键
在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数;如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能
情景一:针对自增主键的表,在插入时不需要主键,而是在插入过程自动获取一个自增的主键,比如MySQL,可以采用如下两种配置方式
<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="model.DemoTable">
insert into log_table (code, name)
values (#{code,jdbcType=VARCHAR}, #{name,jdbcType=INTEGER})
</insert>
或
<insert id="add" parameterType="model.DemoTable">
<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID() AS id
</selectKey>
insert into demo_table (code, name)
values (#{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR})
</insert>
在插入操作完成之后,参数demoTable的id属性就已经被赋值了
测试的示例
@RequestMapping(value = "/addDemo")
@ResponseBody
public String addDemo(DemoTable demoTable) {
demoTable = new DemoTable();
demoTable.setCode("10002");
demoTable.setName("测试示例");
log.info("Before:" + demoTable.getId());
int i = demoService.addDemo(demoTable);
log.info("After:" + demoTable.getId());
return i ;
}
情景二:如果数据库表的主键不是自增的类型,那么就需要应用层生成主键的方式,这种情况下主键在插入时已经知道
情景三:针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle、DB2,可以采用如下配置方式
<insert id="add" parameterType="model.DemoTable">
<selectKey resultType="Java.lang.Integer" order="BEFORE" keyProperty="id">
SELECT SEQ_TEST.NEXTVAL FROM DUAL
</selectKey>
insert into category (code, name)
values (#{code,jdbcType=VARCHAR},#{name,jdbcType=VARCHAR})
</insert>
Mybatis返回插入的主键的更多相关文章
- Mybatis 返回插入的主键
业务中,会遇到这样的问题,就是感觉返回的主键,插入作为其他表的外键. 那么问题来了,如何去实现,其实方法比较简单,这里就是重点记录下,会出现的误区. 用自动生成sql工具的话,加上下面这句话 < ...
- MyBatis返回插入的主键ID(Mysql数据库)
1.Java代码: 1.1 entity类: User.java public class User { private int userId; private String userName; pr ...
- (转)MyBatis+MySQL 返回插入的主键ID
MyBatis+MySQL 返回插入的主键ID 需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法:在mapper中指定keyProperty属性,示例如 ...
- mybatis+mysql返回插入的主键,参数只是提供部分参数
mybatis+mysql返回插入的主键,参数只是提供部分参数 <insert id="insertByChannelIdOpenid" useGeneratedKeys=& ...
- MyBatis+MySQL 返回插入的主键ID
需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法:在mapper中指定keyProperty属性,示例如下: <insert id="i ...
- mybatis MySQL返回插入的主键ID,oracle不行
<insertid=“doSomething"parameterType="map"useGeneratedKeys="true"keyProp ...
- 杜绝网上压根没测过就乱写之 《oracle mybatis 返回自增主键 》
面试过好多人,包括自己也属于这么一个情况: 遇到问题直接去网上查,一般都可以查到解决方案.其中也包括一些基本的面试资料的答案. 其实有很多答案也都是正确的,但是还是存在一些压根就是胡乱抄来的答案,也不 ...
- MyBatis + MySQL返回插入的主键id
这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增i ...
- mybatis返回自增主键踩坑记
背景 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map ...
随机推荐
- 16进制转rgb
- (void)colorWithHexString: (NSString *) stringToConvert { //去掉前后空格换行符 NSString *cString = [[stringT ...
- 从浏览器的console获取angularjs的scope
http://ionicframework.com/blog/angularjs-console/ 1: Access Scopes We can access any scope (even iso ...
- jQuery scroll事件
scroll事件适用于window对象,但也可滚动iframe框架与CSS overflow属性设置为scroll的元素. $(document).ready(function () { //本人习惯 ...
- 程序员必须知道的git托管平台
http://www.open-open.com/lib/view/open1420704561390.html
- $("#id a") - $("#id .c a") = ?
前沿 这是之前淘宝的一道面试题,题目借用了 jQuery 选择器的语法.大概的意思是,从 #id 元素内选出所有不是 .c 后代的 a 元素,即父元素 #id 内的所有后代元素中,选出不是 .c 后代 ...
- Gvim for php 安装配置
VIM for PHP Windows 2011-05-14 11:51:51| 分类: Php|举报|字号 订阅 虽然vim本质上只是一个编辑器.但只要配合一些适当的插件,vim也能变成一 ...
- poj 3328(多起点多终点的最短路)
题目链接:http://poj.org/problem?id=3328 思路:这道题花了我将近3个小时,结果发现是方向搞错了,orz,过了样例之后提交wa,然后换成优先队列就过了.其实题目意思很简单, ...
- Project Euler 110:Diophantine reciprocals II 丢番图倒数II
Diophantine reciprocals II In the following equation x, y, and n are positive integers. For n = 4 th ...
- 性能标准:Apdex介绍
目前的应用程序性能测试工具有多方面的局限.每种工具都有其自己对性能的定义,产生太多混乱或矛盾的数值,并缺少简洁的结论.IT经理们无法深入了解性能,而这是软件与用户对关键应用的体验有关的事. 听云作为新 ...
- python urllib2的proxyhandler
1. 再a方法中新建了个opener,使用了代理: proxydict = {} proxydict['http'] = "http://%s:%s"%(ip,port) #pri ...