Mybatis设置主键自增

本文介绍了如何在Mybatis中设置主键自增以及如何自动生成UUID类型的主键。对于mysql数据库,可以通过设置`useGeneratedKeys`和`keyProperty`实现主键自增。对于UUID类型主键,数据库需定义为varchar类型,配置`<selectKey>`标签并在插入前执行以获取并赋值给实体类的id属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值