java代码   ​​spring data jpa Query By Example(QBE)_perl​​



  1. //首先是表的映射
  2. public class OperLog implements
  3. private static final long
  4.       
  5. @Id
  6. @GeneratedValue
  7. private
  8. @Column
  9. @JsonSerialize(using=DateJsonSerialize.class)  
  10. private
  11. @Column
  12. private
  13. @Column
  14. private
  15. }  
  16. //DAO只要接口就可以了,
  17. public interface OperLogRepository extends
  18.   
  19. }  
  20. //service层
  21. @Service("dataservice")  
  22. public class DataServiceImpl implements
  23.   
  24. public Pagenation<OperLog> pageOperLog(int page, int
  25. new PageRequest(page-1, rows,new Sort(Direction.DESC,"id"));  
  26.         Page<OperLog> infos = olDao.findAll(buildOperSpecification(key, start,end), pinfo);  
  27. new
  28.         pg.setRows(infos.getContent());  
  29. new
  30. return
  31.     }  
  32.       
  33. private Specification<OperLog> buildOperSpecification(final
  34. final Date start, final
  35. return new
  36. public
  37. new
  38. if(StringUtils.hasText(key)){  
  39. "oper");  
  40. "%" + key + "%"));  
  41.                 }  
  42. if(start!=null){  
  43. "stamp");  
  44.                     predicates.add(cb.greaterThanOrEqualTo(np, start));  
  45.                 }  
  46. if(end!=null){  
  47. "stamp");  
  48.                     predicates.add(cb.greaterThanOrEqualTo(np, end));  
  49.                 }  
  50. if (predicates.size() > 0) {  
  51. return cb.and(predicates.toArray(new
  52.                 }  
  53. return
  54.             }  
  55.               
  56.         };  
  57.     }  
  58.   
  59.   
  60. @Autowired
  61.     OperLogRepository olDao;  



这里千万要注意的是PageRequest的页码是从0开始的,而我自己页码是从1开始的!所以导致分页的时候,只做了一个count语句,记录没有取!血的教训啊! 

下面是一些配置文件 



Xml代码   ​​spring data jpa Query By Example(QBE)_perl​​



  1. <bean id="myEmf"  
  2.         class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">  
  3.         <property name="dataSource" ref="dataSource" />  
  4.         <property name="packagesToScan" value="com.fox.dataws.model" />  
  5.         <property name="jpaVendorAdapter">  
  6.             <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">  
  7.                 <property name="showSql" value="${hibernate.show_sql}" />  
  8.                 <property name="generateDdl" value="${jpa.generateDdl}" />  
  9.                 <property name="databasePlatform" value="${persistence.dialect}" />  
  10.             </bean>  
  11.         </property>  
  12.     </bean>  
  13.     <bean id="dataSource"  
  14.         class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  15.         <property name="driverClassName" value="${db.driver}" />  
  16.         <property name="url" value="${db.url}" />  
  17.         <property name="username" value="${db.uid}" />  
  18.         <property name="password" value="${db.pwd}" />  
  19.     </bean>  
  20.     <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">  
  21.         <property name="entityManagerFactory" ref="myEmf" />  
  22.     </bean>  
  23.     <tx:annotation-driven transaction-manager="transactionManager" />  
  24.       
  25.     <jpa:repositories base-package="com.fox.dataws.repo" />