MyBatis教程[2]----完成CRUD操作

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);
    }

輸出結果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章