SringBoot 학습의 Jpa는 주로 사용자 정의 조회와 조건 결합과 페이지 나누기
/*
*/
@Query("select b from Book b where b.name like %?1%") // hql( ),Book ,?1 , %
public List findByName(String name);
/*
sql
*/
@Query(value = "select * from book b where b.name=?1", nativeQuery = true)
List findByName(String name);
/*
*/
@Query(value="select * from t_book order by RAND() limit ?1",nativeQuery = true) // false, sql
public List randomList(Integer n);
@Query(value = "select name,author,price from Book b where b.price>?1 and b.price2")
List findByPriceRange(long price1, long price2);
@Query(value = "select name,author,price from Book b where b.name like %:name%")
List findByNameMatch(@Param("name") String name);
@Query(value = "select * from book b where b.name=?1", nativeQuery = true)
List findByName(String name);
/*
@Param
*/
@Query("select name,author,price from Book b where b.name=:name and b.author=:author and b.price=:price")
List findByNamedParam(@Param("name")String name,@Param("author")String author,@Param("price")String price);
public ModelAndView list2(Book book){ //
ModelAndView mav=new ModelAndView();
List bookList=bookDao.findAll(new Specification(){
/*
*/
@Override
public Predicate toPredicate(Root root, CriteriaQuery> query, CriteriaBuilder cd) { //cb ;query ;root
Predicate predicate=cd.conjunction(); //conjunction:
// null
if(book!=null){
if(book.getName()!=null&&!"".equals(book.getName())){ //
predicate.getExpressions().add(cd.like(root.get("name"),"%"+book.getName()+"%")); //cb.like(root.get("name"): , like , equal ;
}
if(book.getAuthor()!=null&&!"".equals(book.getAuthor())){
predicate.getExpressions().add(cd.like(root.get("author"),"%"+book.getAuthor()+"%"));
}
}
return predicate; //
}
});
mav.addObject("bookList",bookList);
mav.setViewName("bookList");
return mav;
}// ,
predicate.getExpressions().add(cd.greaterThanOrEqualTo(root.get("createDate"), document.getFirstDate()));
//
predicate.getExpressions().add(cd.lessThanOrEqualTo(root.get("createDate"), document.getLastDate()));
조인트+페이지//dao
public interface DocumentRepository extends JpaRepository{
Page findAll(Specification specification, Pageable pageable);
}
//service
public interface DocumentService {
public Page findAll(UsefulDocument document, int pageNum, int pageSize);
}
//service
@Override
public Page findAll(UsefulDocument document, int pageNum, int pageSize) { //
List orders = new ArrayList(); //
//
if (document.getFirstDate() != null) {
orders.add(new Sort.Order(Sort.Direction.DESC, "createDate"));
} else if (document.getLastDate() != null) {
orders.add(new Sort.Order(Sort.Direction.DESC, "createDate"));
} else { // id
orders.add(new Sort.Order(Sort.Direction.ASC, "id"));
}
//
Sort sort = new Sort(orders);
// , 、
Pageable pageable=new PageRequest(pageNum,pageSize,sort);
// findAll ( )
Page documentList = documentRepository.findAll(new Specification() { @Override …… }, pageable);
// , pageNum
return documentList;
}
Sort sort=new Sort(Sort.Direction.ASC,"age"); // ( )
// String
//
Sort.Order order1=new Sort.Order(Sort.Direction.DESC,"age");
Sort.Order order2=new Sort.Order(Sort.Direction.ASC,"grade");
Sort.Order order3=new Sort.Order(Sort.Direction.DESC,"dnum");
//
List list=new ArrayList<>();
list.add(order1);
list.add(order2);
list.add(order3);
// Sort
Sort sort=new Sort(list);
정렬Iterable findAll(Sort sort);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.