【Mybatis從0到1-004】模糊查詢、更新、刪除、添加用戶

【Mybatis從0到1-003】mybatis框架及簡單入門程序是解決本章內容的關鍵,本章節主要是實現模糊查詢、更新、刪除、添加用戶。實現步驟與之前一章完全一樣,這裏再傻瓜式的走一遍流程,加深記憶與理解。

只需要兩步,第一,修改映射文件User.xml;第二,書寫程序邏輯代碼。

【1】首先,實現模糊查詢用戶信息。

【1-1】修改映射文件,加入如下代碼:

<!-- 根據用戶名稱模糊查詢用戶信息,可能返回多條
resultType:指定就是單條記錄所映射的java對象 類型
${}:表示拼接sql串,將接收到參數的內容不加任何修飾拼接在sql中。
使用${}拼接sql,引起 sql注入
${value}:接收輸入 參數的內容,如果傳入類型是簡單類型,${}中只能使用value
 -->
    <select id="findUserByUsername" parameterType="java.lang.String" resultType="po.User">
         SELECT *FROM user WHERE username like '%${value}%'
    </select>

【1-2】添加程序代碼到MyFirstMybatisTest.java文件,加入如下代碼。

  public void findUserByUsername() throws Exception {// mybatis配置文件
        String resource = "SqlMapConfig.xml";
        // 得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);

        // 創建會話工廠,傳入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 通過工廠得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        List<User> userList = sqlSession.selectList("test.findUserByUsername","%小明%");

        System.out.println(userList);

        // 釋放資源
        sqlSession.close();
【1-3】根據之前的創建單元測試的方法,給函數findUserByUsername()創建單元測試,創建好的代碼如下所示:

【1-4】運行findUserByUsername()函數,將會顯示如下信息:


模糊查詢結束。

剩下的更新、刪除和添加的步驟,與上面一模一樣,這裏只貼出關鍵代碼。

【2】更新用戶信息

【2-1】配置映射文件

<!-- 根據id更新用戶
	分析:
	需要傳入用戶的id
	需要傳入用戶的更新信息
	parameterType指定user對象,包括 id和更新信息,注意:id必須存在
	#{id}:從輸入 user對象中獲取id屬性值
	 -->
    <update id="updateUser" parameterType="po.User">
        UPDATE user SET username =#{username},birthday=#{birthday},sex=#{sex},address=#{address} WHERE id =#{id}
    </update>
【2-2】添加程序代碼到MyFirstMybatisTest.java文件,加入如下代碼

// 更新用戶信息
    public void updateUserTest() throws Exception {
        // mybatis配置文件
        String resource = "SqlMapConfig.xml";
        // 得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 創建會話工廠,傳入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 通過工廠得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        User user = new User();
        //必須設置id
        user.setId(29);
        user.setUsername("王小二");
        user.setBirthday(new Date());
        user.setSex("2");
        user.setAddress("北京海淀");
        sqlSession.update("test.updateUser", user);
        // 提交事務
        sqlSession.commit();
        // 釋放資源
        sqlSession.close();
    }
【2-3】創建測試單元和運行略
【3】刪除用戶信息

【3-1】配置映射文件

 <!-- 刪除 用戶
	根據id刪除用戶,需要輸入 id值
	 -->
    <delete id="deleteUser" parameterType="java.lang.Integer">
        DELETE FROM user WHERE id=#{id}
    </delete>
【3-2】添加程序代碼到MyFirstMybatisTest.java文件,加入如下代碼

public void deleteUserTest() throws Exception {
        // mybatis配置文件
        String resource = "SqlMapConfig.xml";
        // 得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);

        // 創建會話工廠,傳入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 通過工廠得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        sqlSession.delete("test.deleteUser",30);
        // 提交事務
        sqlSession.commit();
        // 釋放資源
        sqlSession.close();
    }
【3-3】創建測試單元和運行略
【4】添加用戶

【4-1】配置映射文件

<!-- 添加用戶
    parameterType:指定輸入 參數類型是pojo(包括 用戶信息)
    #{}中指定pojo的屬性名,接收到pojo對象的屬性值,mybatis通過OGNL獲取對象的屬性值
    -->
    <insert id="insertUser" parameterType="po.User">
        <!--  將插入數據的主鍵返回,返回到user對象中
                SELECT LAST_INSERT_ID():得到剛insert進去記錄的主鍵值,只適用與自增主鍵

                keyProperty:將查詢到主鍵值設置到parameterType指定的對象的哪個屬性
                order:SELECT LAST_INSERT_ID()執行順序,相對於insert語句來說它的執行順序
                resultType:指定SELECT LAST_INSERT_ID()的結果類型
                 -->
        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
            SELECT LAST_INSERT_ID()
        </selectKey>
        INSERT INTO user(username,birthday,address) VALUES(#{username},#{birthday},#{address})
    </insert>

【4-2】添加程序代碼到MyFirstMybatisTest.java文件,加入如下代碼

 public void insertUserTest() throws Exception {
        // mybatis配置文件
        String resource = "SqlMapConfig.xml";
        // 得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 創建會話工廠,傳入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 通過工廠得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
       User user = new User();
       user.setSex("1");
       user.setUsername("王小軍");
       user.setAddress("河南鄭州");
       user.setBirthday(new Date());
       sqlSession.insert("test.insertUser",user);
       //提交事務
       sqlSession.commit();
        // 獲取用戶信息主鍵
        System.out.println(user.getId());
        // 釋放資源
        sqlSession.close();
    }
4-3】創建測試單元和運行略

上面就是通過mybatis進行用戶信息的增加、刪除、更新、查找的操作,最後做個總結。

【總結】

1. 在映射文件中通過parameterType指定輸入 參數的類型

2. 在映射文件中通過resultType指定輸出結果的類型

3. #{}表示一個佔位符號,#{}接收輸入參數,類型可以是簡單類型、pojo、hashmap。如果接收簡單類型,#{}中可以寫成value或其它名稱。#{}接收pojo對象值,通過OGNL讀取對象中的屬性值,通過屬性.屬性.屬性...的方式獲取對象屬性值。

4. ${}表示一個拼接符號,會導致sql注入,所以不建議使用${}。${}接收輸入參數,類型可以是簡單類型,pojo、hashmap。如果接收簡單類型,${}中只能寫成value。${}接收pojo對象值,通過OGNL讀取對象中的屬性值,通過屬性.屬性.屬性...的方式獲取對象屬性值。

5. selectOne表示查詢出一條記錄進行映射。如果使用selectOne可以實現使用selectList也可以實現(list中只有一個對象)

6. selectList表示查詢出一個列表(多條記錄)進行映射。如果使用selectList查詢多條記錄,不能使用selectOne

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