接下来是常用的增加,修改以及删除部分
首先是增加部分,增加一个新的数据
@Testpublic void testInsert() {// 添加一个新用户记录Student s = new Student();s.setName("NewStudent");s.setAge(25);boolean saved = studentService.save(s);//可以根据saved来进行后续处理,添加成功则saved=true,反之为false}
然后是批量添加数据:
@Testpublic void testSaveBatch() {// 批量插入多个数据ArrayList<Student> students = new ArrayList<>();for (int i = 0; i < 5; i++) {Student student = new Student();student.setName("Student" + i);student.setAge(20 + i);students.add(student);}boolean saved = studentService.saveBatch(students);//可以根据saved来进行后续处理,添加成功则saved=true,反之为false}
通常情况下,以上2种的添加方式可以满足大部分的需求,然后是修改部分:
@Testpublic void testUpdateById() {// 根据ID更新用户记录Student s = new Student();s.setId(1L);s.setAge(18);boolean updated = studentService.updateById(s);//后续可以根据updated 进行一些别的处理,true为修改成功,false为修改失败}
运行结果如下:
然后是自定义条件修改数据
@Testpublic void testUpdate() {// 自定义条件修改数据QueryWrapper<Student> queryWrapper = new QueryWrapper<>();//使用Wrapper记录条件queryWrapper.like("name", "折");//模糊查询queryWrapper.eq("sex", "女");Student s = new Student();s.setAge(17);boolean updated = studentService.update(s, queryWrapper);}
运行结果如下:
然后是根据id批量修改:
@Testpublic void testUpdateBatchById() {// 根据id批量修改用户记录List<Student> ss = new ArrayList<>();for (int i = 23; i <= 27; i++) {Student s = new Student();s.setId((long) i);s.setName("NewStudent" + i);s.setAge(30 + i);ss.add(s);}boolean updated = studentService.updateBatchById(ss);}
运行结果如下: 然后是修改或者添加数据
@Testpublic void testSaveOrUpdate() {// 更新数据,如果没有这个数据,则改为添加Student s = new Student();s.setId(12L);s.setAge(40);boolean savedOrUpdate = studentService.saveOrUpdate(s);}
运行结果如下:
没有数据时
有数据时:
在上面的基础上,增加判断条件部分:
@Testpublic void testSaveOrUpdateWithWrapper() {// 更新或插入用户记录Student s = new Student();s.setId(11L);s.setName("澪");s.setAge(55);QueryWrapper<Student> updateWrapper = new QueryWrapper<>();//用于修改用户时判断updateWrapper.eq("name", "澪");boolean savedOrUpdate = studentService.saveOrUpdate(s, updateWrapper);}
没有数据时:
有数据时:
最后是删除部分
首先是根据id删除:
@Testpublic void testRemoveById() {// 根据ID删除一个用户记录boolean removed = studentService.removeById(12L);}
运行代码如下:
由于案例开启了逻辑删除,所以这里采用的是逻辑删除的方式,如果没有开启逻辑删除,则会在数据库中删除这个数据
然后是使用实体类的id删除
@Testpublic void testRemoveByIdWithEntity() {// 根据实体对象删除一个用户记录Student s = new Student();s.setId(13L);s.setAge(11);boolean removed = studentService.removeById(s);assertTrue(removed);}
结果如下
可以看到,这个只能根据实体类的id删除,而不能根据其内部的其他数据来删除,而使用map和Wrapper可以实现根据条件删除:
首先是map:
@Testpublic void testRemoveByMap() {// 根据条件删除用户记录Map<String, Object> Map = new HashMap<>();Map.put("age", "111");boolean removed = studentService.removeByMap(Map);}
运行结果如下:
接下来是Wrapper
@Testpublic void testRemoveByWrapper() {// 根据条件删除用户记录QueryWrapper<Student> queryWrapper = new QueryWrapper<>();queryWrapper.eq("age", "22");queryWrapper.like("name", "1");//模糊查询boolean removed = studentService.remove(queryWrapper);}
结果如下:
最后是批量删除:
@Testpublic void testRemoveByIds() {// 根据ID列表批量删除用户记录List<Long> ids = Arrays.asList(21L, 20L);boolean removed = studentService.removeByIds(ids);}
运行结果如下: