广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Mybatis执行插入语句后并返回主键ID问题
  • 666
分享到

Mybatis执行插入语句后并返回主键ID问题

Mybatis执行插入语句Mybatis返回主键IDMybatis插入语句 2023-03-07 08:03:29 666人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1、Mysql数据库设置ID自增情况2、使用UUID自增主键3、mybatis-plus在执行插入语句后返回自定义ID总结我们知道JDBC可以实现插入语句后返回主键Id,那myb

我们知道JDBC可以实现插入语句后返回主键Id,那mybatis可以实现吗?

答案是肯定的。

1、mysql数据库设置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;
 }

2、使用UUID自增主键

<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>

3、mybatis-plus在执行插入语句后返回自定义ID

可以直接使用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);
 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Mybatis执行插入语句后并返回主键ID问题

本文链接: https://www.lsjlt.com/news/198767.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作