MyBatis-03(CRUD)

愛喝椰汁的木木發表於2020-10-26

在MyBatis-02(第一個程式)文章的基礎上,進行以下操作:

  • UserDao改為UserMapper
  • UserMapper.xml中修改為:mapper namespace=“com.codeyancy.dao.UserMapper

專案結構如圖:
在這裡插入圖片描述

查詢(select)

根據id查詢使用者

1.在UserMapper中新增對應的方法

    //根據ID查詢使用者
    User getUserId(int id);

2.在UserMapper.xml中新增Select語句

<select id="getUserId" parameterType="int" resultType="com.codeyancy.pojo.User">
        select * from mybatis.user where id = #{id}
    </select>

3.測試類中測試(UserDaoTest)

    @Test
    public void getUserID() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUserId(1);
        System.out.println(user);

        sqlSession.close();
    }

注意事項增刪改必須提交事務
提交事務:sqlSession.commit();

增加(insert)

給資料庫增加一個使用者

  1. 在UserMapper介面中新增對應的方法
    //insert一個使用者
    int addUser(User user);
  1. 在UserMapper.xml中新增insert語句
 <insert id="addUser" parameterType="com.codeyancy.pojo.User">
        insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd})
    </insert>
  1. 測試類中測試(UserDaoTest)
//增刪改必須要提交事務
    @Test
    public void addUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int res = mapper.addUser(new User(4, "哈哈兒", "000000"));

        if(res > 0){
            System.out.println("插入成功!");
        }

        //提交事務
        sqlSession.commit();
        sqlSession.close();
    }

修改(update)

修改使用者資訊

  1. 在UserMapper介面中新增對應的方法
    //修改使用者
    int updateUser(User user);
  1. 在UserMapper.xml中新增insert語句
 <update id="updateUser" parameterType="com.codeyancy.pojo.User">
       update mybatis.user set name=#{name},pwd=#{pwd} where id = #{id}
   </update>
  1. 測試類中測試(UserDaoTest)
@Test
    public void updateUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.updateUser(new User(4,"小小","123123"));

        sqlSession.commit();
        sqlSession.close();

    }

刪除(delete)

根據id刪除一個使用者

  1. 在UserMapper介面中新增對應的方法
//刪除一個使用者
    int deleteUser(int id);
  1. 在UserMapper.xml中新增insert語句
 <delete id="deleteUser" parameterType="com.codeyancy.pojo.User">
        delete from mybatis.user where id = #{id}
    </delete>
  1. 測試類中測試(UserDaoTest)
@Test
    public void deleteUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.deleteUser(4);

        sqlSession.commit();
        sqlSession.close();
    }

Map

通常情況下,在實體類(資料庫的表)中,欄位(引數)過多,應當考慮使用Map
1.UserMapper

    //萬能得Map
    int addUser2(Map<String,Object> map);

2.UserMapper.xml

<insert id="addUser2" parameterType="map">
        insert into mybatis.user (id,name) values (#{userid},#{username})
    </insert>

3.測試

@Test
    public void addUser2(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("userid",5);
        map.put("username","小小");

        mapper.addUser2(map);

        //提交事務
        sqlSession.commit();
        sqlSession.close();
    }

map測試後資料庫的結果:
在這裡插入圖片描述

相關文章