zoukankan      html  css  js  c++  java
  • SpringBoot 使用JPA+MySQL+Thymeleaf 总结 二

    方法一

    使用原生sql查询 或者 为方法名增加 Pageable参数

    import  org.springframework.data.domain.Pageable;
    
    public interface BookQueryRepository extends Repository<Book, Long> {
        
        //原生的sql语句,要使用数据表名
        @Query(value = "select * from tb_book b where b.name=?1", nativeQuery = true) 
        List<Book> findByName(String name);
        
        //基础查询  重要说明 JPA规范中的定义JPQL是不能使用星号(*)来查询的
        @Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2")
        List<Book> findByPriceRange(long price1, long price2);
        
       @Query("select t from Book t")
    List<Book> findAllBook1();
       @Query("select * from book " , nativeQuery = true)
    List<Book> findAllBook2();
    //Like表达式
        @Query(value = "select name,author,price from Book b where b.name like %:name%")
        List<Book> findByNameMatch(@Param("name") String name);
    
        //使用@Param注解注入参数
        @Query(value = "select name,author,price from Book b where b.name = :name AND b.author=:author AND b.price=:price")
        List<Book> findByNamedParam(@Param("name") String name, @Param("author") String author,
                @Param("price") long price);
        
        //分页查询 原生sql语句
        @Query(value = "SELECT * FROM tb_book WHERE name = ?1",
        countQuery = "SELECT count(*) FROM tb_book WHERE name = ?1",
        nativeQuery = true)
        Page<Book> findByName(String name, Pageable pageable);
    
        //分页查询
        @Query("select name,author,price from Book b where b.name=?")
        public List<Book> findByNamePaged(String certNum,Pageable pageable);
    }

    业务层调用

    public class BookService {
    
        @Autowired
        private BookQueryRepository bookQueryDao;
        public Page<Book> getBook(int pageNumber,int pageSize){
            PageRequest request = this.buildPageRequest(pageNumber,pageSize);
            Page<Book> result= bookQueryDao.findByName("123123",request);
            return result;
        }
        
      //构建PageRequest
        private PageRequest buildPageRequest(int pageNumber, int pagzSize) {
            return new PageRequest(pageNumber - 1, pagzSize, null);
        }
    }

    方法二

    直接使用 PagingAndSortingRepository

    import org.springframework.data.repository.PagingAndSortingRepository;
    
    public interface BookQueryRepository extends PagingAndSortingRepository<Book, String> {
    
    }

    业务层调用

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.domain.Page;
    import org.springframework.data.domain.PageRequest;
    
    public class BookService {
    
        @Autowired
        private BookQueryRepository bookQueryDao;
        public Page<Book> getBook(int pageNumber,int pageSize){
            PageRequest request = this.buildPageRequest(pageNumber,pageSize);
            Page<Book> result= bookQueryDao.findAll(request);
            return result;
        }
        
      //构建PageRequest
        private PageRequest buildPageRequest(int pageNumber, int pagzSize) {
            return new PageRequest(pageNumber - 1, pagzSize, null);
        }
    } 
     
  • 相关阅读:
    socket是什么
    0,1,2 代表标准输入、标准输出、标准错误
    认识程序的执行:从高级语言到二进制,以java为例
    97 条 Linux 运维工程师常用命令总结[转]
    rsync 参数配置说明[转]
    shell 脚本学习之内部变量
    ansible 入门学习(一)
    python 管理多版本之pyenv
    CentOS6 克 隆
    yum 本地仓库搭建
  • 原文地址:https://www.cnblogs.com/liuxm2017/p/9915343.html
Copyright © 2011-2022 走看看