1、select
@Query("from User where id = ?1")
User queryByID(Integer id);
@Query(" from User where id = ?1 and name = ?2")
User queryByIDandName(Integer id,String name);
2、delete
@Modifying
@Query("delete from User where id = ?1")
void deleteByID(Integer id);
3、update
@Modifying
@Query("update User set name = :name where id = :id")
void updateByID(@Param("name") String name,@Param("id") Integer id);
4、動態查詢(and、or、like)
//查詢條件拼接
private Specification<User> createSpecification(Map searchMap) {
return new Specification<User>() {
@Override
public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicates = new ArrayList<Predicate>();
if (searchMap.get("id")!=null && !"".equals(searchMap.get("id"))) {
predicates.add(cb.equal(root.get("id"),searchMap.get("id")));
}
if (searchMap.get("name")!=null && !"".equals(searchMap.get("name"))) {
predicates.add(cb.like(root.get("name").as(String.class), "%"+(String)searchMap.get("name")+"%"));
}
return cb.and( predicateList.toArray(new Predicate[predicates.size()]));
}
};
}
Map<String,Object> searchMap = new HashMap();
searchMap.put("id",1);
searchMap.put("name","zs");
//searchMap:傳參
Specification<User> specification = createSpecificationLogin(searchMap);
List<User> list = wUserSitesDao.findAll(specification);
sql語句:select * from User where (name like ?) and id = 1
//查詢條件拼接
private Specification<User> createSpecification(Map searchMap) {
return new Specification<User>() {
@Override
public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicates = new ArrayList<Predicate>();
List<Predicate> predicateList = new ArrayList<Predicate>();
if (searchMap.get("id")!=null && !"".equals(searchMap.get("id"))) {
predicates.add(cb.equal(root.get("id"),searchMap.get("id")));
}
if (searchMap.get("name")!=null && !"".equals(searchMap.get("name"))) {
predicateList.add(cb.like(root.get("name").as(String.class), "%"+(String)searchMap.get("name")+"%"));
}
if (searchMap.get("address")!=null && !"".equals(searchMap.get("address"))) {
predicateList.add(cb.isNull(root.get("address").as(String.class)));
}
Predicate predicateAnd = cb.and(predicates.toArray(new Predicate[predicateList.size()]));
predicateAnd = cb.and(predicateAnd);
Predicate predicateOr = cb.or(predicates.toArray(new Predicate[predicates.size()]));
predicateOr = cb.and(predicateOr);
return query.where(predicateOr,predicateAnd).getRestriction();
}
};
}
Map<String,Object> searchMap = new HashMap();
searchMap.put("id",1);
searchMap.put("name","zs");
searchMap.put("address",null);
//searchMap:傳參
Specification<User> specification = createSpecificationLogin(searchMap);
List<User> list = wUserSitesDao.findAll(specification);
sql語句: select * from User where (name like ? or address is null) and id = 1