- //首先是表的映射
- public class OperLog implements Serializable {
- private static final long serialVersionUID = 1L;
- @Id
- @GeneratedValue
- private Integer id;
- @Column
- @JsonSerialize(using=DateJsonSerialize.class)
- private Date stamp;
- @Column
- private String oper;
- @Column
- private String memo;
- }
- //DAO只要接口就可以了,
- public interface OperLogRepository extends CrudRepository<OperLog, Integer>,JpaSpecificationExecutor<OperLog> {
- }
- //service层
- @Service("dataservice")
- public class DataServiceImpl implements DataService {
- public Pagenation<OperLog> pageOperLog(int page, int rows, String key, Date start, Date end) {
- Pageable pinfo = new PageRequest(page-1, rows,new Sort(Direction.DESC,"id"));
- Page<OperLog> infos = olDao.findAll(buildOperSpecification(key, start,end), pinfo);
- Pagenation<OperLog> pg = new Pagenation<OperLog>(page, rows);
- pg.setRows(infos.getContent());
- pg.setTotal(new Long(infos.getTotalElements()).intValue());
- return pg;
- }
- private Specification<OperLog> buildOperSpecification(final String key,
- final Date start, final Date end) {
- return new Specification<OperLog>() {
- public Predicate toPredicate(Root<OperLog> root, CriteriaQuery<?> q, CriteriaBuilder cb) {
- List<Predicate> predicates = new ArrayList<Predicate>();
- if(StringUtils.hasText(key)){
- Path<String> np = root.get("oper");
- predicates.add(cb.like(np, "%" + key + "%"));
- }
- if(start!=null){
- Path<Date> np = root.get("stamp");
- predicates.add(cb.greaterThanOrEqualTo(np, start));
- }
- if(end!=null){
- Path<Date> np = root.get("stamp");
- predicates.add(cb.greaterThanOrEqualTo(np, end));
- }
- if (predicates.size() > 0) {
- return cb.and(predicates.toArray(new Predicate[predicates.size()]));
- }
- return cb.conjunction();
- }
- };
- }
- @Autowired
- OperLogRepository olDao;
这里千万要注意的是PageRequest的页码是从0开始的,而我自己页码是从1开始的!所以导致分页的时候,只做了一个count语句,记录没有取!血的教训啊!
下面是一些配置文件
- <bean id="myEmf"
- class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="packagesToScan" value="com.fox.dataws.model" />
- <property name="jpaVendorAdapter">
- <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
- <property name="showSql" value="${hibernate.show_sql}" />
- <property name="generateDdl" value="${jpa.generateDdl}" />
- <property name="databasePlatform" value="${persistence.dialect}" />
- </bean>
- </property>
- </bean>
- <bean id="dataSource"
- class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName" value="${db.driver}" />
- <property name="url" value="${db.url}" />
- <property name="username" value="${db.uid}" />
- <property name="password" value="${db.pwd}" />
- </bean>
- <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
- <property name="entityManagerFactory" ref="myEmf" />
- </bean>
- <tx:annotation-driven transaction-manager="transactionManager" />
- <jpa:repositories base-package="com.fox.dataws.repo" />
相关推荐
3. **Query Methods**:Spring Data JPA 支持通过方法名自动转换为 JPA 查询。例如,`findAll()` 会执行一个 SELECT ALL 查询,`findByLastname(String lastname)` 会根据指定的姓氏查找用户。此外,还可以使用注解 ...
Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。
Spring Data JPA 是一个强大的框架,它简化了Java应用程序与数据库之间的交互,是Spring生态中的重要组成部分。通过使用Spring Data JPA,开发者可以避免编写大量的JPA(Java Persistence API)和SQL代码,专注于...
Spring框架的核心特性包括依赖注入(DI)和面向切面编程(AOP),并且它还提供了对数据库操作的支持,这主要通过Spring Data JPA和Java Persistence API(JPA)实现。 Spring注解是Spring框架中的一大特色,它极大...
7. **Query方法**:Spring Data JPA允许通过方法名自动推断查询逻辑,如findByXXX(),同时支持自定义@Query注解写入SQL或HQL查询。 8. **事务管理**:Spring Data JPA利用Spring的事务管理能力,通过@Transactional...
- Spring Data JPA支持DQL(Domain Query Language)风格的方法命名,使得查询语句的编写变得直观且易于理解。例如,`findByLastnameIgnoreCase` 方法会忽略大小写进行查询,`...
此外,Spring Data JPA还支持自定义查询,允许开发者使用@Query注解编写JPQL语句。 Hibernate作为JPA的实现,是一个强大的对象关系映射(ORM)框架。它将Java对象与数据库表进行映射,使得开发者可以通过操作对象来...
Spring Data JPA 是一个基于 Java 的开源框架,它属于 Spring Data 家族的一部分,旨在简化 Java 应用中的数据访问层代码,特别针对基于 JPA(Java Persistence API)的数据持久化操作。本教程将详细介绍 Spring ...
**Spring Data JPA 深度解析** Spring Data JPA 是 Spring Framework 的一个重要模块,它为 Java Persistence API (JPA) 提供了便捷的数据访问层。这个框架简化了数据库操作,使得开发人员能够以声明式的方式处理...
Spring Data JPA是Java开发中的一个关键框架,它简化了与关系型数据库的交互,特别是基于Java Persistence API (JPA)。这个框架是Spring生态系统的组成部分,为开发者提供了声明式数据访问的方式,允许通过简单的...
Spring Data JPA 是一个强大的框架,它简化了与Java Persistence API (JPA) 的交互,JPA 是Java 开发者用来管理和持久化应用程序数据的一种标准。在这个“Spring Data JPA Demo”项目中,我们将深入探讨如何利用...
SpringDataJPA是Spring框架中用于简化数据持久层操作的一个模块,它基于Java持久层API(Java Persistence API,JPA)标准。在实际的项目开发中,SpringDataJPA能够极大程度上减少我们对于数据访问层代码的编写工作。...
1. 查询操作:Spring Data JPA支持多种查询方式,包括使用JPA的`@Query`注解编写自定义SQL或HQL(Hibernate Query Language),以及使用方法命名查询。例如,我们可以通过在Repository接口中定义一个方法名,让...
标题"其实spring data jpa比mybatis更好用.zip_JPA mybatis"指出本主题将探讨Spring Data JPA与MyBatis之间的比较,并暗示在某些方面,Spring Data JPA可能更为优越。描述中提到"全方位介绍jpa",表明内容将深入讲解...
2. **Query 方法**:在Repository接口中,可以定义方法名,Spring Data JPA会根据方法名自动构造对应的JPA查询。例如,`findAll()`对应于SQL的`SELECT * FROM table`,`findByUsername(String username)`对应于`...
**Spring Data JPA 简单案例** Spring Data JPA 是 Spring 框架的一个模块,它为使用 JPA(Java Persistence API)提供了强大的支持,简化了数据访问层的开发。通过使用 Spring Data JPA,我们可以避免编写大量重复...
Spring Data JPA还支持更复杂的查询,如使用`@Query`注解编写自定义SQL或者HQL,或者使用` Specifications`进行动态查询。此外,它还提供了事务管理、懒加载、级联操作等特性,使得数据访问更加灵活和强大。 在实际...
使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速开发迭代,可用于开发模板,项目经过测试,可完美运行! 使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速...