Spring Data JPA(Java Persistence API),是Spring框架的主要构建块之一。如果您想使用持久数据,它也是一个强大的工具。包括以下三方面的内容:
最底层的接口是Repository,是一个空类。Repository的子类有:
package org.springframework.data.repository;
@org.springframework.stereotype.Indexed
public interface Repository {
}
package org.springframework.data.jpa.repository;
@org.springframework.data.repository.NoRepositoryBean
public interface JpaRepository extends org.springframework.data.repository.PagingAndSortingRepository, org.springframework.data.repository.query.QueryByExampleExecutor {
java.util.List findAll();
java.util.List findAll(org.springframework.data.domain.Sort sort);
java.util.List findAllById(java.lang.Iterable iterable);
java.util.List saveAll(java.lang.Iterable iterable);
void flush();
S saveAndFlush(S s);
void deleteInBatch(java.lang.Iterable iterable);
void deleteAllInBatch();
T getOne(ID id);
java.util.List findAll(org.springframework.data.domain.Example example);
java.util.List findAll(org.springframework.data.domain.Example example, org.springframework.data.domain.Sort sort);
}
JPA语法特性可以参考官方文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation
基于上一章节springboot-mysql做修改,引入依赖
org.springframework.boot
spring-boot-starter-data-jpa
UserRepository.java
public interface UserRepository extends JpaRepository {
/**
* 根据id集合查询
* @param ids
* @return
*/
List findByIdIn(Collection ids);
}
User.java
@Entity
@Table(name = "t_user")
public class User {
@Id
private Long id;
@Column(name = "name")
private String name;
@Column(name = "password")
private String password;
//省略getter、setter、toString方法
}
UserService.java
public interface UserService {
User findById(long id);
List findAll();
User save(User user);
void delete(Long id);
Page findAll(Pageable pageable);
/**
* 根据id集合查询
* @param ids
* @return
*/
List findByIdIn(Collection ids);
}
UserServiceImpl.java
@Service
public class UserServiceImpl implements UserService {
@Resource
UserRepository userRepository;
@Override
public User findById(long id) {
return userRepository.getOne(id);
}
@Override
public List findAll() {
return userRepository.findAll();
}
@Override
public User save(User user) {
return userRepository.save(user);
}
@Override
public void delete(Long id) {
userRepository.deleteById(id);
}
@Override
public Page findAll(Pageable pageable) {
return userRepository.findAll(pageable);
}
@Override
public List findByIdIn(Collection ids) {
return userRepository.findByIdIn(ids);
}
}
@Resource(name = "userRepository")
UserRepository userRepository;
@Autowired
@Qualifier("userRepository")
UserRepository userRepository;
@Resource
UserService userService;
@Test
public void contextLoads() {
// 查询所有数据
List users = userService.findAll();
System.out.println("findAll():" users);
// 通过ID列表查询
List ids = new ArrayList<>();
ids.add(1L);
ids.add(2L);
List users1 = userService.findByIdIn(ids);
System.out.println("findByIdIn():" users1);
// 分页查询
PageRequest pageRequest = new PageRequest(0, 10);
Page users2 = userService.findAll(pageRequest);
System.out.println("page findAll():" users2 ", totlaPages:" users2.getTotalPages() ", pageSize:" users2.getSize());
// 新增数据
User user = new User();
user.setId(3l);
user.setName("lindong");
user.setPassword("123456");
userService.save(user);
System.out.println("save():" userService.findAll());
// 删除数据
userService.delete(3l);
System.out.println("delete():" userService.findAll());
}
GitHub:https://github.com/chenjiecg/SpringBoot.git
本文由博客一文多发平台 OpenWrite 发布!