三.三 删除方法
三.三.一 测试类
@Test public void deleteTest(){ userService.deleteUser(1); }
三.三.二 Mapper接口及其相关XML文件实现
UserMapper接口
void deleteById(@Param("id") int id);
UserMapper.xml 实现
<delete id="deleteById"> delete from user where id=#{id} </delete>
三.三.三 验证
三.四 有则修改,没有则添加
三.四.一 测试类
@Test public void saveTest(){ //1. 构建对象 User user=new User(); user.setId(2); user.setName("欢欢A"); user.setDescription("岳泽霖最好的朋友"); //2. 修改方法 userService.saveUser(user); log.info("添加或者修改成功,{}",user); }
三.四.二 Mapper接口及其相关XML文件实现
UserMapper接口
void saveUser(@Param("user") User user);
UserMapper.xml 实现
<update id="saveUser"> insert into user( <if test="user.id!=null"> id, </if> name,sex,age,description) values( <if test="user.id!=null"> #{user.id}, </if> #{user.name},#{user.sex},#{user.age},#{user.description} ) on duplicate key update name=#{user.name},sex=#{user.sex}, age=#{user.age},description=#{user.description} </update>
使用 on duplicate key update 进行修改。
插入时,要将 id字段也放置进去。
三.四.三 验证
当没有id属性时,或者id属性不存在时,就添加 Updates为1
数据库里面,会有此 id=2的数据。 手动修改数据库,填充 sex=男,age=25,name改成 ZH
再次运行,就变成了修改。 Updates为2
三.五 批量添加测试
三.五.一 测试类
@Test public void batchAddTest(){ //1. 构建对象 User user=new User(); user.setName("小欢欢"); user.setAge(22); user.setSex("女"); user.setDescription("一个小坏蛋"); User user1=new User(); user1.setName("小泽霖"); user1.setAge(25); user1.setSex("男"); user1.setDescription("一个大坏蛋"); //这是修改的操作,id=2已经存在这条记录了。 User user2=new User(); user2.setName("岳泽霖"); user2.setAge(25); user2.setSex("男性"); user2.setDescription("一个快乐的程序员"); //2. 放置到集合里面 List<User> userList=new ArrayList<>(); userList.add(user); userList.add(user1); userList.add(user2); userService.batchAddUser(userList); }
三.五.二 Mapper接口及其相关XML文件实现
UserMapper接口
void batchAdd(@Param("userList") List<User> userList);
UserMapper.xml 实现
<insert id="batchAdd"> insert into user(name,sex,age,description) values <foreach collection="userList" item="user" open="" close="" separator=","> (#{user.name},#{user.sex},#{user.age},#{user.description}) </foreach> </insert>
三.五.三 验证
三.六 批量修改测试
三.六.一 测试类
@Test public void batchUpdateTest(){ //1. 构建对象 User user=new User(); user.setId(2); user.setName("小欢欢A"); user.setAge(22); user.setSex("女"); user.setDescription("一个小坏蛋"); User user1=new User(); user1.setId(3); user1.setName("小泽霖A"); user1.setAge(25); user1.setSex("男"); user1.setDescription("一个大坏蛋"); // User user2=new User(); user2.setId(4); user2.setName("岳泽霖A"); user2.setAge(25); user2.setSex("男性"); user2.setDescription("一个快乐的程序员"); //2. 放置到集合里面 List<User> userList=new ArrayList<>(); userList.add(user); userList.add(user1); userList.add(user2); userService.batchUpdateUser(userList); }
三.六.二 Mapper接口及其相关XML文件实现
UserMapper接口
void batchUpdate(@Param("userList") List<User> userList);
UserMapper.xml 实现
<update id="batchUpdate"> <foreach collection="userList" item="user" open="" close="" separator=";"> update user set name=#{user.name},sex=#{user.sex}, age=#{user.age},description=#{user.description} where id=#{user.id} </foreach> </update>
三.六.三 验证
如果执行失败,看 application.yml 配置文件里面 datasource的url部分,是否添加了参数 allowMultiQueries=true ,如果没有,需要添加上.
三.七 批量删除测试
三.七.一 测试类
@Test public void batchDeleteTest(){ List<Integer> ids= Arrays.asList(3,4,6); userService.batchDeleteByIds(ids); }
三.七.二 Mapper接口及其相关XML文件实现
UserMapper接口
void batchDeleteByIds(@Param("ids") List<Integer> ids);
UserMapper.xml 实现
<delete id="batchDeleteByIds"> delete from user where id in <foreach collection="ids" item="id" open="(" close=")" separator=","> #{id} </foreach> </delete>
三.七.三 验证
三.八 根据id查询测试
三.八.一 测试类
@Test public void findByIdTest(){ User user=userService.findById(2); log.info(user); }
三.八.二 Mapper接口及其相关XML文件实现
UserMapper接口
User findById(@Param("id") int id);
UserMapper.xml 实现
<select id="findById" resultType="top.yueshushu.learn.pojo.User"> select * from user where id=#{id} </select>
三.八.三 验证