Spring Data JPA学习二:JPA基础查询方法
1.CrudRepository方法详解
CrudRepository interface内容
@NoRepositoryBean
public interface CrudRepository<T, ID> extends Repository<T, ID> {
<S extends T> S save(S var1);
<S extends T> Iterable<S> saveAll(Iterable<S> var1);
Optional<T> findById(ID var1);
boolean existsById(ID var1);
Iterable<T> findAll();
Iterable<T> findAllById(Iterable<ID> var1);
long count();
void deleteById(ID var1);
void delete(T var1);
void deleteAll(Iterable<? extends T> var1);
void deleteAll();
}
JPA已经实现了这些方法,实现该接口就可以用上面的方法。
CrudRepository interface的使用示例
@Autowired
private UserRepository userRepository;
@GetMapping("add")
public void addUser(){
User user = new User();
user.setUsername("2");
user.setPassword("2");
userRepository.save(user);
}
@GetMapping("addAll")
public void addAll(){
List<User> list = new ArrayList<>();
for (int i=0 ; i<10 ; i++){
User user = new User();
user.setUsername(String.valueOf(i));
user.setPassword(String.valueOf(i));
list.add(user);
}
System.out.println(list.toString());
for (int i = 0 ; i<list.size() ; i++) {
userRepository.save(list.get(i));
}
}
@GetMapping("findOne")
public void findOne(){
// Optional<User> user = userRepository.findById(1);
User user = new User();
user.setId(1);
Example<User> example = Example.of(user);
Optional<User> user1 = userRepository.findOne(example);
System.out.println(user1.toString());
}
@GetMapping("findAll")
public void findAll(){
List<User> users = userRepository.findAll();
for (User user:users) {
System.out.println(user.toString());
}
}
@GetMapping("count")
public void count(){
long l = userRepository.count();
System.out.println(l);
}
@GetMapping("exists")
public void exists(){
User user = new User();
user.setId(1);
Example<User> example = Example.of(user);
boolean b = userRepository.exists(example);
if(b){
System.out.println("存在");
}else{
System.out.println("不存在");
}
}
@GetMapping("delete")
public void delete(){
User user = new User();
user.setId(1);
userRepository.delete(user);
}
这里特别强调一下delete和save方法,因为在实际工作中有的人会画蛇添足,自己先去查询再做判断处理,其实Spring JPA底层都已经考虑到了。