03-MyBatis-添加操作

本文详细介绍了在MyBatis中如何使用selectKey标签实现主键返回,包括mysql自增主键和uuid主键的处理方式,并展示了如何进行SQL批量插入操作。

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

MyBatis添加操作

使用的sql:

INSERT INTO `user`(username,birthday,sex,address) VALUES (‘黄忠’,2016-07-26,1,‘三国’)

映射文件
在User.xml配置文件中添加如下内容:
``xml


INSERT INTO user (username,birthday,sex,address) VALUES (#{username},#{birthday},#{sex},#{address})

## mysql自增主键返回
查询id的sql

SELECT LAST_INSERT_ID()

通过修改User.xml映射文件,可以将mysql自增主键返回:
如下添加==selectKey== 标签
```xml
<!-- 保存用户 -->
<insert id="saveUser" parameterType="cn.itcast.mybatis.pojo.User">
	<!-- selectKey 标签实现主键返回 -->
	<!-- keyColumn:主键对应的表中的哪一列 -->
	<!-- keyProperty:主键对应的pojo中的哪一个属性 -->
	<!-- order:设置在执行insert语句前执行查询id的sql,孩纸在执行insert语句之后执行查询id的sql -->
	<!-- resultType:设置返回的id的类型 -->
	<selectKey keyColumn="id" keyProperty="id" order="AFTER" resultType="int">
		SELECT LAST_INSERT_ID()
	</selectKey>
	INSERT INTO `user` (username,birthday,sex,address) VALUES (#{username},#{birthday},#{sex},#{address})
</insert>

LAST_INSERT_ID(): 是mysql的函数,返回auto_increment自增列新记录id值。
注意这里使用的order是“AFTER”

mysql使用 uuid实现主键

需要增加通过select uuid()得到uuid值

<!-- 保存用户 -->
<insert id="saveUser" parameterType="cn.itcast.mybatis.pojo.User">
	<!-- selectKey 标签实现主键返回 -->
	<!-- keyColumn:主键对应的表中的哪一列 -->
	<!-- keyProperty:主键对应的pojo中的哪一个属性 -->
	<!-- order:设置在执行insert语句前执行查询id的sql,孩纸在执行insert语句之后执行查询id的sql -->
	<!-- resultType:设置返回的id的类型 -->
	<selectKey keyColumn="id" keyProperty="id" order="BEFORE"
		resultType="string">
		SELECT LAST_INSERT_ID()
	</selectKey>
	INSERT INTO `user` (username,birthday,sex,address) VALUES (#{username},#{birthday},#{sex},#{address})
</insert>

注意这里使用的order是“BEFORE”

SQL批量插入

     <insert id ="insertCodeBatch" parameterType="java.util.List" >
            <selectKey resultType ="java.lang.Integer" keyProperty= "id"
                 order= "AFTER">
                SELECT LAST_INSERT_ID()
            </selectKey >
           insert into redeem_code
           (bach_id, code, type, facevalue,create_user,create_time)
           values
            <foreach collection ="list" item="reddemCode" index= "index" separator =",">
                (
                #{reddemCode.batchId}, #{reddemCode.code},
                #{reddemCode.type},
                #{reddemCode.facevalue},
                #{reddemCode.createUser}, #{reddemCode.createTime}
                )
            </foreach >
     </insert >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值