MyBatis-03(CRUD)

在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。

在创建数据库时,密码默认为空,如果我们只添加id和name,那么就需要用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测试后数据库的结果:
在这里插入图片描述
Map传递参数,直接在sql中取出Key即可!【parameterType=“map”】
对象传递参数,直接在sql中取对象的属性即可!【parameterType=“Object”】
只有一个基本类型参数的情况下,可以直接在sql中取到。

总结
如果参数过多,我们可以考虑直接使用Map实现,如果参数比较少,直接传递参数即可

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页