CRUD即create, read, update,delete,本文在上一篇文章的基礎上繼續討論。
上一篇教程鏈接:MyBatis教程[1]
0.編寫CRUD接口
先把接口全部寫出來
@Mapper
public interface UserMapper {
/**
* 根據id查找單條記錄
* @param id 主鍵id
* @return
*/
User selectById(@Param("id") Long id);
/**
* 插入數據
* @param user 要插入的實體對象
* @return
*/
boolean insert(@Param("u") User user);
/**
* 根據id刪除單條記錄
* @param id 主鍵id
* @return
*/
boolean deleteById(@Param("id") Long id);
/**
* 根據id更新單條記錄
* @param user
* @return
*/
boolean updateById(@Param("u") User user);
/**
* 根據多個條件查找
* @param u user對象
* @return
*/
List<User> select(@Param("u") User u);
}
1.完成新增操作
新增操作採用insert標籤,UserMapper.xml中添加以下代碼
<!--
用insert標籤進行新增操作
id:對應接口方法名
insert語句不需要寫resultType
-->
<insert id="insert">
INSERT INTO `user`(`name`, `phone`, `birthday`) VALUES (#{u.name}, #{u.phone}, #{u.birthday})
</insert>
測試:
@Test
void insert() throws ParseException {
User user = new User();
user.setName("李明");
user.setPhone("11111111111");
user.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("1996-07-18"));
userMapper.insert(user);
}
可以看到成功插入了一條記錄到數據庫中
2.完成刪除操作
刪除操作採用delete標籤,UserMapper.xml中添加以下代碼
<!--
用delete標籤來進行刪除操作
-->
<delete id="deleteById">
DELETE FROM `user` WHERE id = #{id}
</delete>
測試:
@Test
void deleteById() {
userMapper.deleteById(6L);
}
3.完成更新操作
更新操作採用update標籤,UserMapper.xml中添加以下代碼
<!--
用update標籤來進行修改操作
-->
<update id="updateById">
UPDATE `user` SET `name` = #{u.name}, `phone` = #{u.phone}, `birthday` = #{u.birthday}
WHERE `id` = #{u.id};
</update>
測試:
@Test
void update() {
User user = userMapper.selectById(5L);
user.setPhone("12345678");
userMapper.updateById(user);
}
把id=5的記錄的記錄的電話號碼改爲了12345678
4.使用動態SQL語句完成查詢操作
實現的效果:使用name屬性進行模糊查詢,使用phone屬性進行精確查詢。
編寫映射文件代碼:
<!--
1=1: 永遠爲真,目的是拼接後面的AND語句
在這裏用到了動態SQL語句,根據屬性值是否爲空來動態生成SQL語句
-->
<select id="select" resultType="com.yky.springboot.entities.User">
SELECT * FROM `user` WHERE 1=1
<if test="u.name != null and u.name != ''">
AND `name` LIKE CONCAT('%',#{u.name},'%')
</if>
<if test="u.phone != null and u.phone != ''">
AND `phone` = #{u.phone}
</if>
</select>
測試
@Test
void select() {
//模糊查詢名字中帶有小的
User user = new User();
user.setName("小");
List<User> users = userMapper.select(user);
System.out.println(users);
//模糊查詢名字中帶有明的
User user1 = new User();
user1.setName("明");
users = userMapper.select(user1);
System.out.println(users);
//精準查詢手機號是12345678的
User user2 = new User();
user2.setPhone("12345678");
users = userMapper.select(user2);
System.out.println(users);
}
輸出結果