您好,登錄后才能下訂單哦!
這篇文章主要介紹“tk.Mybatis插入數據獲取Id怎么實現”,在日常操作中,相信很多人在tk.Mybatis插入數據獲取Id怎么實現問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”tk.Mybatis插入數據獲取Id怎么實現”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
幾種代碼寫法會有不同的ID
返回值,下面我們一一分析。
??首先一種插入寫法,源碼如下:
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
,符合我們的預期,但是真的是這樣嗎?我們看看數據庫限制是什么樣。
沒錯,我們的真實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; }
主要就是改了這里。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,什么鬼。再看看數據庫。
明顯不是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怎么實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。