MyBatis之增删改查

在前面入门小案例的基础上来学习 CRUD 操作

目录

查询一个用户

添加一个用户

删除一个用户

修改用户信息

使用map来简化操作


查询一个用户

要求:通过用户的 id 查询到用户

用户表:

 

在 UserDao 接口中编写查询用户的方法

//根据 id 查询用户
User getUserById(int userId);

 在 userMapper.xml 文件中编写对应 sql 语句

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

测试

@Test
    public void test1(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        User userById = mapper.getUserById(4);
        System.out.println(userById);
        sqlSession.close();
    }

添加一个用户

注意:增、删、改操作需要使用 sqlSession.commit() 方法提交事务,否则不会生效

要求:向数据库中添加一个 user 对象

接口中设置方法

//添加一个用户
int addUser(User user);

编写 sql 语句

    <insert id="addUser" parameterType="com.zhouyue.pojo.User">
        insert into mybatis.user (id, name, pwd)
        values (#{id}, #{name}, #{pwd});
    </insert>

测试

    //增删改需要提交事务
    @Test
    public void test2(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        int i = mapper.addUser(new User(5, "Cube", "Cube666"));
        if (i > 0){
            System.out.println("添加成功");
        }
        //提交事务
        sqlSession.commit();
        sqlSession.close();
    }

删除一个用户

要求:通过用户 id 删除数据库中对应用户信息

 

接口中设置方法

    //根据 id 删除一个用户
    int delUser(int userId);

 编写 sql 语句

    <delete id="delUser" parameterType="int">
        delete
        from mybatis.user
        where id=#{userId};
    </delete>

测试

    @Test
    public void test3(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        int i = mapper.delUser(7);
        if (i > 0){
            System.out.println("删除成功");
        }
        sqlSession.commit();
        sqlSession.close();
    }

修改用户信息

要求:根据 id 修改对应用户的信息

接口中设置方法:

    //修改用户信息
    int updateUser(User user);

 编写 sql 语句,这里的参数名称必须与前面(属性名)的相同

    <update id="updateUser" parameterType="com.zhouyue.pojo.User">
        update mybatis.user
        set name = #{name}, pwd = #{pwd}
        where id = #{id};
    </update>

测试

 @Test
    public void test4(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        int i = mapper.updateUser(new User(5, "BiuBiu", "BiuBiu666"));
        if (i > 0){
            System.out.println("修改成功");
        }
        sqlSession.commit();
        sqlSession.close();
    }

使用map来简化操作

在上面修改操作中,我们在方法里面传入的是一个 user 对象,如果 user 对象属性太多,我们又只修改其中的一个属性的值,使用上面的方法就很麻烦,因此我们可以使用 map 来简化操作

接口中设置方法

    //修改用户信息方法二
    int updateUser2(Map<String,Object> map);

编写 sql 语句,这里的参数名称可以随意设置,不一定要与前面(属性名)相同

    <update id="updateUser2" parameterType="map">
        update mybatis.user
        set pwd = #{password}
        where id = #{userid};
    </update>

测试,可以发现我们只需向 map 传入 userid 和 password 的值即可,不用修改的 name 值,就不必传入

    @Test
    public void test5(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        Map<String, Object> map = new HashMap<>();
        map.put("password", "xxss12345");
        map.put("userid", 5);
        int i = mapper.updateUser2(map);
        if (i > 0){
            System.out.println("修改成功");
        }
        sqlSession.commit();;
        sqlSession.close();
    }

CRUD 都可以使用这种方式来进行简化  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值