中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

tk.Mybatis插入數據獲取Id怎么實現

發布時間:2021-12-03 14:37:53 來源:億速云 閱讀:267 作者: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

新野县| 阜阳市| 永州市| 化德县| 丹寨县| 越西县| 静安区| 平顺县| 房产| 饶平县| 十堰市| 大田县| 巴青县| 安庆市| 共和县| 义乌市| 澄城县| 苏尼特左旗| 外汇| 太湖县| 谢通门县| 滨海县| 灵川县| 武定县| 台北县| 阳曲县| 萍乡市| 建德市| 绥化市| 康平县| 虎林市| 文安县| 南投市| 东安县| 修武县| 定远县| 新平| 浠水县| 和硕县| 项城市| 房产|