八、持久層框架設(shè)計實現(xiàn)及MyBatis源碼分析-MyBatis基礎(chǔ)回顧及高級應用-MyBatis的CRUD回顧(三)

上一章節(jié),我們完成了MyBatis基礎(chǔ)環(huán)境的搭建,并完成了一個簡單的查詢操作,本小節(jié)們繼續(xù)回顧添加、修改和刪除方法

繼續(xù)在UserMapper.xml文件添加saveUser(添加用戶)、updateUser(修改用戶)、deleteUser(刪除用戶)這個方法,并完成對應SQL的編寫

UserMapper.xml的具體源碼(這里我們編寫刪除方法的時候,占位符直接給了一個abc,主要就是用來驗證一下,如果當方法參數(shù)只有一個的時候,占位符其實可以任意給一個名稱,但是實際開發(fā)過程當中請盡量與實體屬性保持一致)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="study.lagou.com.mapper">

    <!--查詢方法-->
    <select id="findAll" resultType="study.lagou.com.pojo.User">
        SELECT * FROM user
    </select>

    <!--添加用戶-->
    <insert id="saveUser" parameterType="study.lagou.com.pojo.User">
        INSERT INTO user VALUES (#{id},#{username},#{password},#{nickname})
    </insert>

    <!--修改用戶-->
    <update id="updateUser" parameterType="study.lagou.com.pojo.User">
        UPDATE user SET username = #{username},password = #{password},nickname = #{nickname} WHERE id = #{id}
    </update>

    <!--刪除用戶方法,在指定參數(shù)的時候,如果當前方法參數(shù)只有一個,
    那么占位符名稱其實可以任意給一個,只是為了見名知意,我們需要規(guī)
    范,盡量與實體類屬性相對應-->
    <delete id="deleteUser" parameterType="java.lang.Integer">
        DELETE FROM user WHERE id = #{abc}
    </delete>
</mapper>

編寫完UserMapper.xml,我們就接著編寫測試類,對我們新加入的方法進行測試(注意當方法執(zhí)行完成的時候,我們需要調(diào)用sqlSession.close()方法對sqlSession進行關(guān)閉操作,做增刪改操作的時候,需要執(zhí)行sqlSession.commit()才會對數(shù)據(jù)庫產(chǎn)生影響

package study.lagou.com.test;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import study.lagou.com.pojo.User;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * @Description: 功能描述
 * @Author houjh
 * @Email: happyxiaohou@gmail.com
 * @Date: 2021-3-22 19:48
 */
public class MyBatisTest {

    @Test
    public void testFindAll() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        List<User> users = sqlSession.selectList("study.lagou.com.mapper.findAll");
        for (User user : users) {
            System.out.println(user);
        }
        sqlSession.close();
    }

    @Test
    public void testSaveUser() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        User user = new User();
        user.setId(6);
        user.setNickname("湯姆");
        user.setPassword("111");
        user.setUsername("tom");
        sqlSession.insert("study.lagou.com.mapper.saveUser",user);

        //做增刪改查詢的時候,注意一下事務(wù)提交,如果不提交就無法保存到數(shù)據(jù)庫當中
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void testUpdateUser() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        User user = new User();
        user.setId(6);
        user.setNickname("湯姆貓");
        user.setPassword("333");
        user.setUsername("tomcat");
        sqlSession.update("study.lagou.com.mapper.updateUser",user);

        //做增刪改查詢的時候,注意一下事務(wù)提交,如果不提交就無法保存到數(shù)據(jù)庫當中
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void testDeleteUser() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();

        sqlSession.delete("study.lagou.com.mapper.deleteUser",6);

        //做增刪改查詢的時候,注意一下事務(wù)提交,如果不提交就無法保存到數(shù)據(jù)庫當中
        sqlSession.commit();
        sqlSession.close();
    }
}

最后執(zhí)行測試,查看測試結(jié)果是否正常


MyBatis回顧測試結(jié)果.png

上一篇筆記地址:http://www.itdecent.cn/p/165be4dcf424

下一篇筆記地址:http://www.itdecent.cn/p/d8971addfafa

具體代碼對應下載地址:https://gitee.com/happymima/mybatis.git

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容