5.1. mysql
自增主键返回
查询
id
的
sql
SELECT LAST_INSERT_ID()
通过修改
User.xml
映射文件,可以将
mysql
自增主键返回:
如下添加
selectKey
标签
<!-- 保存用户 -->
<
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
值。
5.2. 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
”
5.3.
修改用户
根据用户id
修改用户名
使用的sql
:
UPDATE `user` SET username = '
赵云' WHERE id = 26
5.3.1.
映射文件
在User.xml
配置文件中添加如下内容:
<!-- 更新用户 -->
<
update
id
=
"updateUserById"
parameterType
=
"cn.itcast.mybatis.pojo.User"
>
UPDATE `user` SET
username = #{username} WHERE id = #{id}
</
update
>
5.3.2.
测试程序
MybatisTest
中添加测试方法如下:
@Test
public
void
testUpdateUserById() {
// 4. 创建SqlSession对象
SqlSession
sqlSession
=
sqlSessionFactory
.openSession();
// 5. 执行SqlSession对象执行更新
// 创建需要更新的User
User
user
=
new
User();
user
.setId(
26
);
user
.setUsername(
"关羽"
);
user
.setSex(
"1"
);
user
.setBirthday(
new
Date());
user
.setAddress(
"蜀国"
);
sqlSession
.
update
(
"updateUserById"
,
user
);
// 需要进行事务提交
sqlSession
.commit();
// 7. 释放资源
sqlSession
.close();
}
5.4.
删除用户
根据用户id
删除用户
使用的sql
DELETE FROM `user` WHERE id = 47
5.4.1.
映射文件:
在User.xml
配置文件中添加如下内容:
<!-- 删除用户 -->
<
delete
id
=
"deleteUserById"
parameterType
=
"int"
>
delete from user where
id=#{id}
</
delete
>
5.4.2.
测试程序:
MybatisTest
中添加测试方法如下:
@Test
public
void
testDeleteUserById() {
// 4. 创建SqlSession对象
SqlSession
sqlSession
=
sqlSessionFactory
.openSession();
// 5. 执行SqlSession对象执行删除
sqlSession
.delete(
"deleteUserById"
, 48);
// 需要进行事务提交
sqlSession
.commit();
// 7. 释放资源
sqlSession
.close();
}