springData学习(三)CrudRepository接口学习

文章主要介绍CrudRepository接口里的方法,包括save、saveAll、findById等。测试时,插入和删除需事务,因此新建service层添加事务。还提到在实体类id字段上加注解,其他方法未作测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先看一下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);
	}

其他方法其实都一样。这里就不进行测试了

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值