首先看一下CrudRepository接口里面有哪些方法。
save(S entity) | insert一条数据 |
Iterable<S> saveAll(Iterable<S> entities); | 批量插入多条数据 |
findById(ID id); | 根据id查找数据 |
existsById(ID id); | 判断id是否存在 |
findAll(); | 查找所有 |
findAllById(Iterable<ID> ids); | 根据ids批量查找 |
count(); | 返回数量 |
deleteById(ID id); | 根据id删除 |
delete(T entity); | 根据一个实体类删除 |
deleteAll(Iterable<? extends T> entities); | 批量删除 |
deleteAll(); | 全部删除 |
接下来以此测试。跟上一篇文章不一样的是,在进行插入和删除的时候需要事务,所以新建一个service层来添加事务。
1.save方法
dao层:
public interface StudentCrud extends CrudRepository<Student, Integer>{
}
service层:
@Service
public class StudentCrudService {
@Autowired
private StudentCrud studentCrud;
@Transactional
public void save(Student student) {
studentCrud.save(student);
}
}
测试类:
@Test
public void testSave() {
Student student = new Student();
student.setAge(18);
student.setName("测试save");
student.setScore((double)10);
studentCrudService.save(student);
}
需要注意的是:要在实体类的id字段上面加一个注解
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Integer id;
2.saveAll方法
service层:
@Transactional
public void save(List<Student> sList) {
studentCrud.saveAll(sList);
}
测试类:
@Test
public void testSaveAll() {
List<Student> sList = new
ArrayList<Student>(); for(int i=0;i<50;i++) { Student student = new
Student(); student.setName("测试"+i); student.setAge(50-i);
student.setScore((double)i); sList.add(student); }
studentCrudService.save(sList);
}
3.findById方法
service层:
public Student findById(Integer id) {
Optional<Student> student = studentCrud.findById(id);
return student.get();
}
测试类:
@Test
public void testFindById() {
Student s = studentCrudService.findById(10);
System.out.println(s.toString());
}
4.existsById方法
service层:
public boolean existsById(Integer id) {
boolean flag = studentCrud.existsById(id);
return flag;
}
测试类:
@Test
public void testExistById() {
boolean flag = studentCrudService.existsById(5);
System.out.println(flag);
}
5.findAll方法
服务层:
public List<Student> findAll(){
List<Student> sList = (List<Student>) studentCrud.findAll();
return sList;
}
测试类:
@Test
public void testFindAll() {
List<Student> sList = studentCrudService.findAll();
sList.forEach(System.out::println);
}
6.findAllById方法
service层
public List<Student> findAllById(List<Integer> sList){
List<Student> studentList = (List<Student>) studentCrud.findAllById(sList);
return studentList;
}
测试类:
@Test
public void testFindAllById() {
List<Integer> sList = new ArrayList<Integer>();
sList.add(1);
sList.add(2);
sList.add(3);
sList.add(4);
sList.add(5);
List<Student> studentList = studentCrudService.findAllById(sList);
studentList.forEach(System.out::println);
}
其他方法其实都一样。这里就不进行测试了