由于并没有系统的学习JPA,但是目前还在用,所以临时做了个随笔
普通查询,不带条件,带排序
// 注意排序字段是entity里的字段,驼峰表示的,而不是表中下划线标识的字段
Sort sort = Sort.by(Sort.Order.desc("排序字段"));
xxxDao.findAll(sort);
分页查询,带条件,带排序,下面的示例是模糊查询name和nikname
public class User{
private String name;
private String nikname;
// 省略get set
}
User user=new User();
// 如果查询第1页,则当前第几页=0
// 如果不需要排序,可直接调用另外一个不带排序的重载方法
Pageable pageable = PageRequest.of(当前第几页, 每页多少条, 排序);
ExampleMatcher em = ExampleMatcher.matching()
.withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains())
.withMatcher("nikname", ExampleMatcher.GenericPropertyMatchers.contains());
Example<User> example = Example.of(user, em);
return jpaBrandDao.findAll(example, pageable).toList();
使用原生sql:upda语句必须加@Modifying
// ?1对应第一个参数,?2对应第二个参数
// 注意如果不加nativeQuery = true,则列必须是entity中的字段(驼峰)
@Modifying
@Query(value = "update 表 set 列='新值' where 列 = ?1 and 列 = ?2", nativeQuery = true)
void updateSql(String 参数1,String 参数2);