Mybatis设置主键自增

一、 mysql数据库的主键自增(int类型的主键)
1 创建一个表,设置表的id(此id必须是int类型),设置为auto_increment自增类型
2 映射文件配置如下:

 <insert id="insertUser" parameterType="com.dahuici.zyb.entity.User" useGeneratedKeys="true" keyProperty="id">
        insert into user(name,sex,age) values(#{name},#{sex},#{age})
    </insert>

useGeneratedKeys:设置为true表示开启主键自增。
keyProperty:指定数据库主键对应的实体类属性,好将自增的主键赋值给传入的实体类参数。由于数据库设置的id的主键自增,所以这里的插入sql没有对id进行插入,mysql会自动赋值。

二 、自动生成uuid类型的主键
1 数据库定义一个id为varchar类型的表,注意长度最好设置长点,这里设置的是64,因为生成的uuid长度都比较长。
2 映射文件配置如下:

 <insert id="insertUser" parameterType="com.dahuici.zyb.entity.Student">
        <selectKey keyProperty="id" order="BEFORE" resultType="string">
            select replace(uuid(),'-','')
        </selectKey>
        insert into student(id,name,sex,age) values(#{id},#{name},#{sex},#{age})
    </insert>

<selectKey > :作用就是封装一条需要执行的sql

resultType:指定执行了标签里面的sql后返回的java类型。

keyProperty:指定将标签里面的sql的执行结果封装给传入实体类的那个属性。

order:值为BEFORE/AFTER 表示标签里面的sql是在插入sql之前还是之后执行,并将结果赋值给实体类的某个属性(通过keyProperty指定)。
需要注意的是,这里必须在sql中传入对id进行插入,并且,由于要在执行了标签里面的sql后,传入的实体类的id才有值,所以标签里面的sql必须在插入sql执行之前执行,即order=“BEFORE”,如果设置为order="AFTER ",在插入之后执行,虽然任然会对参数实体类的id赋值,但是数据库中却没有插入id值,因为在之后执行,这时插入的实体对象的id还没有赋值。

https://www.jianshu.com/p/32f61aa86ffb

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值