MyBatis之增删改查"/>
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>
测试
@Testpublic void test1(){SqlSession sqlSession = MyBatisUtils.getSqlSession();UserDao mapper = sqlSession.getMapper(UserDao.class);User userById = mapper.getUserById(4);System.out.println(userById);sqlSession.close();}
添加一个用户
注意:增、删、改操作需要使用 sqlSessionmit() 方法提交事务,否则不会生效
要求:向数据库中添加一个 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>
测试
//增删改需要提交事务@Testpublic 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("添加成功");}//提交事务sqlSessionmit();sqlSession.close();}
删除一个用户
要求:通过用户 id 删除数据库中对应用户信息
接口中设置方法
//根据 id 删除一个用户int delUser(int userId);
编写 sql 语句
<delete id="delUser" parameterType="int">deletefrom mybatis.userwhere id=#{userId};</delete>
测试
@Testpublic void test3(){SqlSession sqlSession = MyBatisUtils.getSqlSession();UserDao mapper = sqlSession.getMapper(UserDao.class);int i = mapper.delUser(7);if (i > 0){System.out.println("删除成功");}sqlSessionmit();sqlSession.close();}
修改用户信息
要求:根据 id 修改对应用户的信息
接口中设置方法:
//修改用户信息int updateUser(User user);
编写 sql 语句,这里的参数名称必须与前面(属性名)的相同
<update id="updateUser" parameterType="com.zhouyue.pojo.User">update mybatis.userset name = #{name}, pwd = #{pwd}where id = #{id};</update>
测试
@Testpublic 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("修改成功");}sqlSessionmit();sqlSession.close();}
使用map来简化操作
在上面修改操作中,我们在方法里面传入的是一个 user 对象,如果 user 对象属性太多,我们又只修改其中的一个属性的值,使用上面的方法就很麻烦,因此我们可以使用 map 来简化操作
接口中设置方法
//修改用户信息方法二int updateUser2(Map<String,Object> map);
编写 sql 语句,这里的参数名称可以随意设置,不一定要与前面(属性名)相同
<update id="updateUser2" parameterType="map">update mybatis.userset pwd = #{password}where id = #{userid};</update>
测试,可以发现我们只需向 map 传入 userid 和 password 的值即可,不用修改的 name 值,就不必传入
@Testpublic 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("修改成功");}sqlSessionmit();;sqlSession.close();}
CRUD 都可以使用这种方式来进行简化
更多推荐
MyBatis之增删改查
发布评论