温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

tk.Mybatis插入数据获取Id怎么实现

发布时间:2021-12-03 14:37:53 来源:亿速云 阅读:300 作者:iii 栏目:开发技术

这篇文章主要介绍“tk.Mybatis插入数据获取Id怎么实现”,在日常操作中,相信很多人在tk.Mybatis插入数据获取Id怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”tk.Mybatis插入数据获取Id怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、问题描述

几种代码写法会有不同的ID返回值,下面我们一一分析。

2、问题分析

  首先一种插入写法,源码如下:

SysUser .java

/**  * 用户管理(SysUser)实体类  *  * @author Chen  * @since 2020-05-06 14:16:48  */ @Data @ApiModel("用户管理") public class SysUser implements Serializable {     private static final long serialVersionUID = 993569543176442301L;     /**     * 编号     */     @Id     private Long id;     /**     * 用户名     */     private String name;     /**     * 昵称     */     private String nickName;     /**     * 头像     */     private String avatar;     /**     * 密码     */     private String password;     /**     * 加密盐     */     private String salt;     /**     * 邮箱     */     private String email;     /**     * 手机号     */     private String mobile;     /**     * 状态  0:禁用   1:正常     */     private Object status;     /**     * 机构ID     */     private Long deptId;     /**     * 创建人     */     private String createBy;     /**     * 创建时间     */     private Date createTime;     /**     * 更新人     */     private String lastUpdateBy;     /**     * 更新时间     */     private Date lastUpdateTime;     /**     * 是否删除  -1:已删除  0:正常     */     private Object delFlag; }

测试类

@Test     void insert() {         SysUser sysUser = new SysUser();         sysUser.setName("zhangsan3");         sysUser.setNickName("张三3");         SysUser insert = sysUserService.insert(sysUser);         System.out.println(insert);     }

结果输出:

SysUser(id=null, name=zhangsan3, nickName=张三3, avatar=null, password=null, salt=null, email=null, mobile=null, status=null, deptId=null, createBy=null, createTime=null, lastUpdateBy=null, lastUpdateTime=null, delFlag=null)

是的我们获取到的是id=null,这显然不符合我们的预期。于是修改代码。只改测试类。比如输入id=0。源码如下:

@Test     void insert() {         SysUser sysUser = new SysUser();         sysUser.setId(0L);         sysUser.setName("zhangsan6");         sysUser.setNickName("张三6");         SysUser insert = sysUserService.insert(sysUser);         System.out.println(insert);     }

再次运行程序,控制台输出如下:

SysUser(id=0, name=zhangsan4, nickName=张三4, avatar=null, password=null, salt=null, email=null, mobile=null, status=null, deptId=null, createBy=null, createTime=null, lastUpdateBy=null, lastUpdateTime=null, delFlag=null)

嗯,好像确实输出了id=0,符合我们的预期,但是真的是这样吗?我们看看数据库限制是什么样。

tk.Mybatis插入数据获取Id怎么实现

没错,我们的真实id是38。这里就有问题了。查阅相关资料说是在实体类中添加@GeneratedValue(strategy = GenerationType.IDENTITY)就可以了。于是我们照做。修改实体类如下:

/**  * 用户管理(SysUser)实体类  *  * @author Chen  * @since 2020-05-06 14:16:48  */ @Data @ApiModel("用户管理") public class SysUser implements Serializable {     private static final long serialVersionUID = 993569543176442301L;     /**     * 编号     */     @Id     @GeneratedValue(strategy = GenerationType.IDENTITY)     private Long id;     /**     * 用户名     */     private String name;     /**     * 昵称     */     private String nickName;     /**     * 头像     */     private String avatar;     /**     * 密码     */     private String password;     /**     * 加密盐     */     private String salt;     /**     * 邮箱     */     private String email;     /**     * 手机号     */     private String mobile;     /**     * 状态  0:禁用   1:正常     */     private Object status;     /**     * 机构ID     */     private Long deptId;     /**     * 创建人     */     private String createBy;     /**     * 创建时间     */     private Date createTime;     /**     * 更新人     */     private String lastUpdateBy;     /**     * 更新时间     */     private Date lastUpdateTime;     /**     * 是否删除  -1:已删除  0:正常     */     private Object delFlag; }

tk.Mybatis插入数据获取Id怎么实现

主要就是改了这里。OK,继续运行程序,结果如下:

SysUser(id=0, name=zhangsan5, nickName=张三5, avatar=null, password=null, salt=null, email=null, mobile=null, status=null, deptId=null, createBy=null, createTime=null, lastUpdateBy=null, lastUpdateTime=null, delFlag=null)

这里的id还是0,什么鬼。再看看数据库。

tk.Mybatis插入数据获取Id怎么实现

明显不是0。所以这里不能设置id的属性。修改测试类。源码如下:

@Test     void insert() {         SysUser sysUser = new SysUser();         sysUser.setName("zhangsan6");         sysUser.setNickName("张三6");         SysUser insert = sysUserService.insert(sysUser);         System.out.println(insert);     }

继续运行程序,结果如下:

SysUser(id=40, name=zhangsan6, nickName=张三6, avatar=null, password=null, salt=null, email=null, mobile=null, status=null, deptId=null, createBy=null, createTime=null, lastUpdateBy=null, lastUpdateTime=null, delFlag=null)

这次id=40了,查看数据库。

tk.Mybatis插入数据获取Id怎么实现

很明显对上了。

到此,关于“tk.Mybatis插入数据获取Id怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI