这篇文章主要讲解了“Mybatis执行插入语句后并返回主键ID问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mybatis执行插入语句后并返回主键ID问题怎么解决”吧!
<insert id="insertUser" parameterType="com.crush.mybatisplus.entity.User"> INSERT INTO tb_user (username,password) VALUES(#{username},#{password}); <selectKey resultType="java.lang.Long" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID() </selectKey> </insert>
(1)这里设置的MySQL的主键是自增的,SELECT LAST_INSERT_ID()返回的是最后一个ID值的意思。
(2)传入的参数必须为对象,不能为string,int之类的单个参数
(3)order属性,取值范围BEFORE/ AFTER,指定是在insert语句前还是后执行selectKey操作。AFTER一般用于MySQL自增的情况下,BEFORE一般用于自定义的ID的获取。
(4)keyProperty属性,默认值unset,用于设置getGeneratedKeys方法或 selectKey子元素返回值将赋值到领域模型的哪个属性中,也就是实体类中,对应数据库的主键id。
(5)最后在实体类中,要有主键的get与set方法,满足后,在impl层controller层,直接实体类.getId()即可获取本次插入后的主键ID,返回前端即可。
示例:
@Override public Long insert(User user) { return userMapper.insertUser(user)>0?user.getId():null; }
<insert id="insertUser2" parameterType="com.crush.mybatisplus.entity.User"> <selectKey keyProperty="id" order="BEFORE" resultType="String"> select uuid() </selectKey> INSERT INTO tb_user (id,username,password) VALUES(#{id},#{username},#{password}); </insert>
可以直接使用mybatis-plus的save方法,或者mapper层的insert方法
它都会将返回的结果自动填充进你映射的实体类,从而可以直接获取到你的数据
@PostMapping("/add3") public Object add3(@RequestBody User user){ return tbUserService.save(user)==true?user.getId():"插入失败"; }
还可以直接将User打印出来看一下:
@PostMapping("/add3") public Object add3(@RequestBody User user){ tbUserService.save(user); System.out.println("执行完插入后的User:"+user); return user.getId(); }
执行完插入后的
User:User(id=890909294458048512, username=123456, password=123456, deleted=0, createTime=2021-09-24T10:35:36.873908700, updateTime=2021-09-24T10:35:36.873908700)
还可以使用注解方式,不过注解那种就是将上面mybatis的方法搬到注解上了
@Insert(value = "INSERT INTO t_XXXX" + "XXX,XXX,XXX " + "VALUES (XXX,XXX,XXX)") @SelectKey(statement="select LAST_INSERT_ID()",keyProperty = "id",before = false,resultType = Long.class) Integer testInsert1(MessageMould messageMould);
感谢各位的阅读,以上就是“Mybatis执行插入语句后并返回主键ID问题怎么解决”的内容了,经过本文的学习后,相信大家对Mybatis执行插入语句后并返回主键ID问题怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。