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);
        }
    } 
     
  • 相关阅读:
    C# DataGridView的初始化
    DataGridView固定了列名,怎样将数据内容绑定在列上
    struts2 中的 addActionError 、addFieldError、addActionMessage方法的区别添加错误信息
    <s:iterator>标签迭代数据不显示
    org.hibernate.hql.ast.QuerySyntaxException: tb_voteoption is not mapped [from tb_voteoption where voteID=?]
    struts2导入多个xml引入报错<include>
    没有找到<context:component-scan base-package="">标签
    hibernate.hbm.xml配置文件解析
    Struts2 中#、@、%和$符号的用途
    Some projects cannot be imported because they already exist in the workspace
  • 原文地址:https://www.cnblogs.com/liuxm2017/p/9915343.html
Copyright © 2011-2022 走看看