普通的CRUD
public class EmployeeRopositoryTest extends BaseTest {
@Autowired
private EmployeeRepository employeeRepository;
@Test
public void testfindAll(){
List<Employee> all = employeeRepository.findAll();
for (Employee employee : all) {
System.out.println(employee);
}
}
@Test
public void testfindOne(){
Employee one = employeeRepository.findOne(2L);
System.out.println(one);
}
@Test
public void testdel(){
employeeRepository.delete(272L);
}
@Test
public void testSave(){
Employee employee = new Employee();
employee.setUsername("弋弋");
employee.setPassword("123456");
employee.setEmail("[email protected]");
employee.setAge(22);
employeeRepository.save(employee);
}
@Test
public void testUpdate(){
Employee employee = new Employee();
employee.setUsername("這是修改後的值");
employee.setPassword("1323");
employee.setEmail("123");
employee.setAge(0);
employee.setId(273L);
employeeRepository.save(employee);
}
@Test
public void testBathchRemove(){
List<Employee> list = new ArrayList<>();
Employee one = employeeRepository.findOne(265L);
Employee one1 = employeeRepository.findOne(264L);
list.add(one);
list.add(one1);
employeeRepository.delete(list);
}
分頁排序功能
@Test
public void testfindAllAndSort(){
Sort sort = new Sort(Sort.Direction.DESC,"age","username");
List<Employee> all = employeeRepository.findAll(sort);
for (Employee employee : all) {
System.out.println(employee);
}
}
@Test
public void testPage(){
Pageable page = new PageRequest(1, 10);
Page<Employee> all = employeeRepository.findAll(page);
for (Employee employee : all) {
System.out.println(employee);
}
System.out.println(all.getTotalElements());
System.out.println(all.getTotalPages());
System.out.println(all.getContent());
System.out.println(all.getSize());
System.out.println(all.getNumber());
System.out.println(all.getNumberOfElements());
}
@Test
public void testPageAndOrder(){
Sort age = new Sort(Sort.Direction.DESC, "age");
Pageable able = new PageRequest(0, 5, age);
Page<Employee> all = employeeRepository.findAll(able);
for (Employee employee : all) {
System.out.println(employee);
}
}
根據條件進行查詢
@Test
public void queryByName(){
List<Employee> admin = employeeRepository.findByUsername("admin");
for (Employee employee : admin) {
System.out.println(employee);
}
}
@Test
public void queryByNameLike(){
List<Employee> admin = employeeRepository.findByUsernameLike("%admin%");
for (Employee employee : admin) {
System.out.println(employee);
}
}
@Test
public void testQuery01(){
List<Employee> employees = employeeRepository.loadByUsername1("%admin%", 26);
for (Employee employee : employees) {
System.out.println(employee);
}
}
@Test
public void testQuery02(){
List<Employee> employees = employeeRepository.loadByUsername2("%admin%", 26);
for (Employee employee : employees) {
System.out.println(employee);
}
}
@Test
public void testQuery03(){
Long count = employeeRepository.getCount();
System.out.println(count);
}
JpaSpecificationExecutor
/**
* JpaSpecificationExecutor(瞭解)
*/
@Test
public void testJpaSpecificationExecutor1(){
List<Employee> all = employeeRepository.findAll(new Specification<Employee>() {
@Override
public Predicate toPredicate(Root<Employee> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
Path username = root.get("username");
Path age = root.get("age");
Predicate like = criteriaBuilder.like(username, "%admin%");
Predicate ge = criteriaBuilder.ge(age, 26);
Predicate and = criteriaBuilder.or(like, ge);
return and;
}
});
for (Employee employee : all) {
System.out.println(employee);
}
}
jpa-spec插件
@Test
public void testSpec(){
Specification<Employee> build = Specifications.<Employee>and()
.like("username", "%admin%")
.ge("age", 26)
.build();
List<Employee> all = employeeRepository.findAll(build);
for (Employee employee : all) {
System.out.println(employee);
}
}
/**
* 同時有and 和 or
*/
@Test
public void testSpec02(){
Specification<Employee> build = Specifications.<Employee>and()
.like("username", "%admin%")
.ge("age", 26)
.build();
Specification<Employee> email = Specifications.<Employee>or()
.eq("email", "[email protected]")
.predicate(build)
.build();
List<Employee> all = employeeRepository.findAll(email);
for (Employee employee : all) {
System.out.println(employee);
}
}
/**
* 分頁排序條件查詢
*/
@Test
public void testSpec03(){
Specification<Employee> build = Specifications.<Employee>and()
.like("username", "%admin%")
.ge("age", 26)
.build();
Specification<Employee> email = Specifications.<Employee>or()
.eq("email", "[email protected]")
.predicate(build)
.build();
Sort age = new Sort(Sort.Direction.DESC, "age");
Pageable pageable = new PageRequest(0, 5,age);
Page<Employee> all = employeeRepository.findAll(email, pageable);
for (Employee employee : all) {
System.out.println(employee);
}
}
/**
* jpa-spec插件 高級查詢
*/
@Test
public void testJpaSpecQuery1(){
EmployeeQuery employeeQuery = new EmployeeQuery();
employeeQuery.setUsername("admin");
employeeQuery.setEmail("[email protected]");
List<Employee> all = employeeRepository.findAll(employeeQuery.createSpec());
for (Employee employee : all) {
System.out.println(employee);
}
}
@Test
public void testJpaSpecPage1(){
EmployeeQuery employeeQuery = new EmployeeQuery();
employeeQuery.setUsername("admin");
employeeQuery.setEmail("[email protected]");
employeeQuery.setOrderByName("age");
employeeQuery.setOrder("desc");
Pageable pageable = new PageRequest(employeeQuery.getBegin(), employeeQuery.getRows(),
employeeQuery.createSort());
Page<Employee> all = employeeRepository.findAll(employeeQuery.createSpec(), pageable);
System.out.println(all);
for (Employee employee : all) {
System.out.println(employee);
}
}
}