1....创建步骤:练习使用
1... 创建 maven工程
2...添加依赖 mysql c3p0 hibernate springDataJpa spring相关的包
3...创建 配置文件 员(数据源)工(工程类对象)是(事物)爹(dao 扫描器)
4... 创建实体类
5... 创建dao 接口 继承 JapRespository
2....五种查询方式
(1) crud
添加/修改 数据 save 方法
删除数据 delete 方法
查询 :findOne. getOne 方法
查询全部 findAll() 方法
findAll(Pageable pageaable) 返回Page对象 进行分页 排序
(2) 在springDataJpa框架使用Jpql 查询
a: 在dao 接口中定义一个方法 使用方法的参数设置jpql的参数 并且使用方法的返回值接受查询的结果
b: 在方法上添加一个注解Qquery
c 在注解中编写jpql
d 测试
(3)使用原生的Sql语句
1 dao中 定义一个方法
2 在方法中添加@Query注解
3 在注解中 添加 原生的sql 语句 添加一个属性 nativeQuery=true
4 测试
(4)方法命名规则查询
通过一定的规则 定义一个方法 框架本省就可以根据方法名生成一个SQL语句进行查询
规则:
1 使用findBy开头
2 查询某个字段 findBy后跟实体类的属性的名称
3 如果有多个条件 就在方法后加And+实体类的属性名
4 方法的参数 对应查询的定义
5 返回值根据返回的数据类型定义
如果需要分页查询 在方法中添加一个参数Pageable 即可
(5)使用Specification方式进行查询
最强大的查询方式 除了原生的SQL 语句以外 最复杂的查询方式
使用方式:
1 要在dao 继承JpaSeciFicationExection 接口
2 使用JpaSeciFicationExection 接口 中提供的方法进行查询
每个方法都需要使用Specification对象作为参数
具体实现:::
1...pom.xml 配置
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>com.wsc</groupId> 8 <artifactId>springdatalpa01</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 11 12 <properties> 13 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 14 <maven.compiler.source>1.8</maven.compiler.source> 15 <maven.compiler.target>1.8</maven.compiler.target> 16 <spring.version>4.2.4.RELEASE</spring.version> 17 <hibernate.version>5.0.7.Final</hibernate.version> 18 <slf4j.version>1.6.6</slf4j.version> 19 <log4j.version>1.2.12</log4j.version> 20 <c3p0.version>0.9.1.2</c3p0.version> 21 <mysql.version>5.1.6</mysql.version> 22 </properties> 23 <dependencies> 24 <dependency> 25 <groupId>junit</groupId> 26 <artifactId>junit</artifactId> 27 <version>4.12</version> 28 <scope>test</scope> 29 </dependency> 30 <!--spring start--> 31 <dependency> 32 <groupId>org.aspectj</groupId> 33 <artifactId>aspectjweaver</artifactId> 34 <version>1.6.8</version> 35 </dependency> 36 <dependency> 37 <groupId>org.springframework</groupId> 38 <artifactId>spring-aop</artifactId> 39 <version>${spring.version}</version> 40 </dependency> 41 <dependency> 42 <groupId>org.springframework</groupId> 43 <artifactId>spring-context</artifactId> 44 <version>${spring.version}</version> 45 </dependency> 46 <dependency> 47 <groupId>org.springframework</groupId> 48 <artifactId>spring-context-support</artifactId> 49 <version>${spring.version}</version> 50 </dependency> 51 <dependency> 52 <groupId>org.springframework</groupId> 53 <artifactId>spring-orm</artifactId> 54 <version>${spring.version}</version> 55 </dependency> 56 <dependency> 57 <groupId>org.springframework</groupId> 58 <artifactId>spring-beans</artifactId> 59 <version>${spring.version}</version> 60 </dependency> 61 <dependency> 62 <groupId>org.springframework</groupId> 63 <artifactId>spring-core</artifactId> 64 <version>${spring.version}</version> 65 </dependency> 66 <!--spring end--> 67 <!--hibernate start--> 68 <dependency> 69 <groupId>org.hibernate</groupId> 70 <artifactId>hibernate-core</artifactId> 71 <version>${hibernate.version}</version> 72 </dependency> 73 <dependency> 74 <groupId>org.hibernate</groupId> 75 <artifactId>hibernate-entitymanager</artifactId> 76 <version>${hibernate.version}</version> 77 </dependency> 78 <dependency> 79 <groupId>org.hibernate</groupId> 80 <artifactId>hibernate-validator</artifactId> 81 <version>5.2.1.Final</version> 82 </dependency> 83 <!--hibernate end--> 84 <dependency> 85 <groupId>c3p0</groupId> 86 <artifactId>c3p0</artifactId> 87 <version>${c3p0.version}</version> 88 </dependency> 89 <dependency> 90 <groupId>log4j</groupId> 91 <artifactId>log4j</artifactId> 92 <version>${log4j.version}</version> 93 </dependency> 94 <dependency> 95 <groupId>org.slf4j</groupId> 96 <artifactId>slf4j-api</artifactId> 97 <version>${slf4j.version}</version> 98 </dependency> 99 <dependency> 100 <groupId>org.slf4j</groupId> 101 <artifactId>slf4j-log4j12</artifactId> 102 <version>${slf4j.version}</version> 103 </dependency> 104 <dependency> 105 <groupId>mysql</groupId> 106 <artifactId>mysql-connector-java</artifactId> 107 <version>${mysql.version}</version> 108 </dependency> 109 <dependency> 110 <groupId>org.springframework.data</groupId> 111 <artifactId>spring-data-jpa</artifactId> 112 <version>1.9.0.RELEASE</version> 113 </dependency> 114 <dependency> 115 <groupId>org.springframework</groupId> 116 <artifactId>spring-test</artifactId> 117 <version>4.2.4.RELEASE</version> 118 </dependency> 119 <dependency> 120 <groupId>javax.el</groupId> 121 <artifactId>javax.el-api</artifactId> 122 <version>2.2.4</version> 123 </dependency> 124 <dependency> 125 <groupId>org.glassfish.web</groupId> 126 <artifactId>javax.el</artifactId> 127 <version>2.2.4</version> 128 </dependency> 129 </dependencies> 130 </project>
2...applicationContext.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx" 6 xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:task="http://www.springframework.org/schema/task" 7 xsi:schemaLocation=" 8 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 9 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd 10 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 11 http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd 12 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd 13 http://www.springframework.org/schema/data/jpa 14 http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"> 15 <!--1 dataSource--> 16 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 17 <property name="password" value="wsc"></property> 18 <property name="user" value="root"></property> 19 <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/shop?characterEncoding=utf-8"></property> 20 <property name="driverClass" value="com.mysql.jdbc.Driver"></property> 21 </bean> 22 <!--2 工厂类对象--> 23 <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 24 <!--数据源--> 25 <property name="dataSource" ref="dataSource"></property> 26 <property name="packagesToScan" value="com.wsc.core.entity"></property> 27 <!--配置供应商适配器--> 28 <property name="jpaVendorAdapter"> 29 <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 30 <property name="showSql" value="true"></property> 31 <property name="generateDdl" value="true"></property> 32 <!--是否向控制台输出语句 update hibernate.hbm2ddl.auto--> 33 <property name="database" value="MYSQL"></property> 34 </bean> 35 </property> 36 </bean> 37 <!--配置事物--> 38 <bean id="jpaTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 39 <property name="entityManagerFactory" ref="entityManagerFactory"></property> 40 </bean> 41 <tx:advice id="txAdvice" transaction-manager="jpaTransactionManager"> 42 <tx:attributes> 43 <tx:method name="save*" propagation="REQUIRED"/> 44 <tx:method name="insert*" propagation="REQUIRED"/> 45 <tx:method name="update*" propagation="REQUIRED"/> 46 <tx:method name="delete*" propagation="REQUIRED"/> 47 <tx:method name="get*" read-only="true"/> 48 <tx:method name="find*" read-only="true"/> 49 <tx:method name="*" propagation="REQUIRED"/> 50 </tx:attributes> 51 </tx:advice> 52 <aop:config> 53 <aop:pointcut id="pointcut" expression="execution(* com.wsc.core.service.*.*(..)) "/> 54 <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"></aop:advisor> 55 </aop:config> 56 <!--dao--> 57 <jpa:repositories base-package="com.wsc.core.dao" 58 transaction-manager-ref="jpaTransactionManager" 59 entity-manager-factory-ref="entityManagerFactory"> 60 </jpa:repositories> 61 </beans>
3.....实体类
1 package com.wsc.core.entity; 2 3 import javax.persistence.*; 4 5 /** 6 * @version 1.0 7 * @ClassName Account 8 * @Description TODO 9 * @Author WSC 10 * @Date 2019/8/16 11:31 11 **/ 12 @Entity 13 @Table(name="ac_account") 14 public class Account { 15 @GeneratedValue(strategy= GenerationType.IDENTITY) 16 @Id 17 @Column(name="ac_id") 18 private int acId; 19 @Column(name="ac_address") 20 private String acAddress; 21 @Column(name="ac_name") 22 private String acName; 23 @Column(name="ac_age") 24 private int acAge; 25 26 public int getAcId() { 27 return acId; 28 } 29 30 public void setAcId(int acId) { 31 this.acId = acId; 32 } 33 34 public String getAcAddress() { 35 return acAddress; 36 } 37 38 public void setAcAddress(String acAddress) { 39 this.acAddress = acAddress; 40 } 41 42 public String getAcName() { 43 return acName; 44 } 45 46 public void setAcName(String acName) { 47 this.acName = acName; 48 } 49 50 public int getAcAge() { 51 return acAge; 52 } 53 54 public void setAcAge(int acAge) { 55 this.acAge = acAge; 56 } 57 58 @Override 59 public String toString() { 60 return "Account{" + 61 "acId=" + acId + 62 ", acAddress='" + acAddress + '\'' + 63 ", acName='" + acName + '\'' + 64 ", acAge=" + acAge + 65 '}'; 66 } 67 }
4....dao
1 package com.wsc.core.dao; 2 3 import com.wsc.core.entity.Account; 4 import org.springframework.data.domain.Page; 5 import org.springframework.data.domain.Pageable; 6 import org.springframework.data.jpa.repository.JpaRepository; 7 import org.springframework.data.jpa.repository.JpaSpecificationExecutor; 8 import org.springframework.data.jpa.repository.Modifying; 9 import org.springframework.data.jpa.repository.Query; 10 import org.springframework.transaction.annotation.Transactional; 11 12 import java.util.List; 13 14 //实现JpaRepository接口 15 public interface AccountDao extends JpaRepository<Account,Integer>, JpaSpecificationExecutor<Account> { 16 /** 17 * 查询全部 18 * @return 19 */ 20 @Query("from Account ") 21 public List<Account> getFindAll(); 22 /** 23 * 查询全部 分页 24 * @return 25 * @param pageable 26 */ 27 @Query("from Account ") 28 public List<Account> getFindAllByPage(Pageable pageable); 29 /** 30 * 根据id查询 31 */ 32 @Query("from Account where ac_id=?1") 33 public Account getFindById(Long ac_id); 34 35 /** 36 * 37 * 模糊查询 38 */ 39 @Query("from Account where acName like ?1 and acAddress like ?2") 40 public List<Account> findByName(String acName,String acAddress); 41 42 /** 43 * 修改数据 44 */ 45 @Modifying 46 @Transactional 47 @Query("update Account set acName=?1 where acId=?2") 48 public void change(String acName,Integer acId); 49 50 // 原生SQL 语句查询 51 /** 52 * 原生SQL 语句查询 53 */ 54 @Query(value = "select * from ac_account WHERE ac_name LIKE ?" ,nativeQuery = true) 55 public List<Account> getAccount(String name); 56 57 //方法命名规则查询 58 /** 59 * 根据id查询 60 */ 61 public Account findAccountByAcId(Integer id); 62 63 /** 64 * 模糊查询 65 * @param address 66 * @param name 67 * @return 68 */ 69 public List<Account> findByAcAddressLikeAndAcNameLike(String address,String name); 70 71 /** 72 * 分页查询 73 * @param name 74 * @param pageable 75 * @return 76 */ 77 public Page<Account> findByAcNameLike(String name,Pageable pageable); 78 79 80 }
5.....test
test 01
(delete
save
findOne
count
getOne
分页
排序
判断是否存在)
1 package com.wsc.core.test; 2 3 import com.wsc.core.dao.AccountDao; 4 import com.wsc.core.entity.Account; 5 import org.junit.Test; 6 import org.junit.runner.RunWith; 7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.data.domain.Page; 9 import org.springframework.data.domain.PageRequest; 10 import org.springframework.data.domain.Sort; 11 import org.springframework.test.context.ContextConfiguration; 12 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 13 import org.springframework.transaction.annotation.Transactional; 14 15 import java.util.List; 16 17 /** 18 * @version 1.0 19 * @ClassName TestJPA 20 * @Description TODO 21 * @Author WSC 22 * @Date 2019/8/16 13:12 23 **/ 24 @RunWith(SpringJUnit4ClassRunner.class) 25 @ContextConfiguration("classpath:applicationContext.xml") 26 public class TestJPA { 27 @Autowired 28 private AccountDao accountDao; 29 /** 30 * 添加数据 31 */ 32 @Test 33 public void test01(){ 34 // ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); 35 // AccountDao accountDao = applicationContext.getBean(AccountDao.class); 36 Account account = new Account(); 37 account.setAcAddress("提阿女号"); 38 account.setAcAge(133); 39 account.setAcName("zhang"); 40 this.accountDao.save(account); 41 } 42 /** 43 * 删除数据 44 */ 45 @Test 46 public void test02(){ 47 accountDao.delete(22); 48 } 49 /** 50 * 修改数据 51 */ 52 @Test 53 public void test03(){ 54 Account account = accountDao.findOne(23); 55 account.setAcName("阿凡提123"); 56 account.setAcAddress("美丽的郑州"); 57 accountDao.save(account); 58 } 59 /** 60 * 查询单个数据 findOne 方法 61 */ 62 @Test 63 public void test04(){ 64 Account one = accountDao.findOne(23); 65 System.out.println(one); 66 } 67 /** 68 * 查询数据的总个数 count 方法 69 */ 70 @Test 71 public void getCount(){ 72 long count = accountDao.count(); 73 System.out.println(count); 74 } 75 /** 76 * 获得数据单个 77 * 必须加注解 @Transactional 事务注解 78 * 不加报错:could not initialize proxy - no Session 79 */ 80 @Test 81 @Transactional 82 public void getFindOne(){ 83 Account one = accountDao.getOne(23); 84 System.out.println(one); 85 } 86 /** 87 * 分页功能 88 */ 89 @Test 90 public void testPage(){ 91 PageRequest pageRequest = new PageRequest(0, 5); 92 Page<Account> accountPage = accountDao.findAll(pageRequest); 93 //总的数据条数 94 long totalElements = accountPage.getTotalElements(); 95 System.out.println(totalElements); 96 //总的页数 97 int totalPages = accountPage.getTotalPages(); 98 System.out.println(totalPages); 99 //遍历数据 100 for(Account account:accountPage){ 101 System.out.println(account); 102 } 103 List<Account> accountList = accountPage.getContent(); 104 System.out.println(accountList); 105 } 106 /** 107 * 排序 Sort.Direction.DESC 降序 108 */ 109 @Test 110 public void testSort(){ 111 // 创建一个sort 对象 112 // 参数1 排序方式 113 // 参数2 排序的字段 应该是实体类的属性名 114 Sort sort = new Sort(Sort.Direction.DESC,"acId"); 115 List<Account> accountList = accountDao.findAll(sort); 116 for(Account account:accountList) 117 System.out.println(account); 118 } 119 /** 120 * 判断 是否 存在 exists 121 */ 122 @Test 123 public void testExists(){ 124 boolean exists = accountDao.exists(1); 125 System.out.println(exists); 126 } 127 }
test02
( 全部信息
根据id查
分页
模糊查询 原生SQL
方 法命名规则查询
模糊查询 方 法命名规则查询
根据 名字 模糊查询 并 分页)
1 package com.wsc.core.test; 2 3 import com.wsc.core.dao.AccountDao; 4 import com.wsc.core.entity.Account; 5 import org.junit.Test; 6 import org.junit.runner.RunWith; 7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.data.domain.Page; 9 import org.springframework.data.domain.PageRequest; 10 import org.springframework.test.context.ContextConfiguration; 11 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 12 13 import java.util.List; 14 15 /** 16 * @version 1.0 17 * @ClassName Test02 18 * @Description TODO 19 * @Author WSC 20 * @Date 2019/8/19 14:32 21 **/ 22 @RunWith(SpringJUnit4ClassRunner.class) 23 @ContextConfiguration("classpath:applicationContext.xml") 24 public class Test02 { 25 @Autowired 26 private AccountDao accountDao; 27 28 /** 29 * 全部信息 30 */ 31 @Test 32 public void testFindAll() { 33 List<Account> findAll = accountDao.getFindAll(); 34 for (Account account : findAll) { 35 System.out.println(account); 36 } 37 } 38 39 /** 40 * id 信息 41 */ 42 @Test 43 public void getById() { 44 Account findById = accountDao.getFindById(3L); 45 System.out.println(findById); 46 } 47 48 /** 49 * 查询全部 分页 50 */ 51 @Test 52 public void getByPage() { 53 // 参数 1:页面开始 2: 页面数据条数 54 PageRequest pageRequest = new PageRequest(0, 5); 55 List<Account> findAllByPage = accountDao.getFindAllByPage(pageRequest); 56 for (Account account:findAllByPage) { 57 System.out.println(account); 58 } 59 } 60 61 /** 62 * 模糊查询 63 */ 64 @Test 65 public void get02(){ 66 List<Account> byName = accountDao.findByName("%2%", "%中%"); 67 for(Account account:byName){ 68 System.out.println(account); 69 } 70 } 71 @Test 72 public void change(){ 73 accountDao.change("滚",3); 74 } 75 76 /** 77 * 原生SQL 语句查询 78 */ 79 @Test 80 public void get01(){ 81 List<Account> account = accountDao.getAccount("%2%"); 82 for(Account acc: account){ 83 System.out.println(acc); 84 } 85 } 86 87 /** 88 * 方 法命名规则查询 89 */ 90 @Test 91 public void get03(){ 92 Account accountByAcId = accountDao.findAccountByAcId(3); 93 System.out.println(accountByAcId); 94 } 95 96 /** 97 * 模糊查询 方 法命名规则查询 98 */ 99 @Test 100 public void get04(){ 101 List<Account> byAcAddressAndAcName = accountDao.findByAcAddressLikeAndAcNameLike("%中%", "%2%"); 102 for(Account account:byAcAddressAndAcName){ 103 System.out.println(account); 104 } 105 } 106 107 /** 108 * 根据 名字 模糊查询 并 分页 109 */ 110 @Test 111 public void get05(){ 112 Page<Account> byAcNameLike = accountDao.findByAcNameLike("%2%", new PageRequest(0, 2)); 113 long totalElements = byAcNameLike.getTotalElements(); 114 System.out.println(totalElements+"总的条数"); 115 int totalPages = byAcNameLike.getTotalPages(); 116 System.out.println(totalPages+"总的页数"); 117 List<Account> content = byAcNameLike.getContent(); 118 for(Account account:content){ 119 System.out.println(account); 120 } 121 } 122 }
test03
(使用Specification方式进行查询)
1 package com.wsc.core.test; 2 3 import com.wsc.core.dao.AccountDao; 4 import com.wsc.core.entity.Account; 5 import org.junit.Test; 6 import org.junit.runner.RunWith; 7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.data.domain.Page; 9 import org.springframework.data.domain.PageRequest; 10 import org.springframework.data.jpa.domain.Specification; 11 import org.springframework.test.context.ContextConfiguration; 12 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 13 14 import javax.persistence.criteria.CriteriaBuilder; 15 import javax.persistence.criteria.CriteriaQuery; 16 import javax.persistence.criteria.Predicate; 17 import javax.persistence.criteria.Root; 18 import java.util.List; 19 20 /** 21 * @version 1.0 22 * @ClassName test03 23 * @Description TODO 24 * @Author WSC 25 * @Date 2019/8/19 16:55 26 **/ 27 28 // 测试 使用 Specification 方式进行查询 29 30 @RunWith(SpringJUnit4ClassRunner.class) 31 @ContextConfiguration("classpath:applicationContext.xml") 32 public class test03 { 33 @Autowired 34 private AccountDao accountDao; 35 36 /** 37 * 使用 Specification 方式 38 * 根据 id 查询 39 */ 40 @Test 41 public void test01(){ 42 Account account=accountDao.findOne(new Specification<Account>() { 43 @Override 44 public Predicate toPredicate(Root<Account> root, CriteriaQuery<?> query, CriteriaBuilder cb) { 45 // 参数1 字段名称 46 // 参数2 字段的值 47 Predicate acId = cb.equal(root.get("acId"), 3); 48 return acId; 49 } 50 }); 51 System.out.println(account); 52 } 53 54 /** 55 * 多字段 模糊查询 并 整合 56 */ 57 @Test 58 public void get02(){ 59 accountDao.findAll(new Specification<Account>() { 60 @Override 61 public Predicate toPredicate(Root<Account> root, CriteriaQuery<?> query, CriteriaBuilder cb) { 62 // 创建 根据模糊查询的条件 63 Predicate acName = cb.like(root.get("acName"), "%2%"); 64 Predicate acAddress = cb.like(root.get("acAddress"), "%中%"); 65 // 组合两个条件 66 Predicate predicate = cb.and(acName, acAddress); 67 return predicate; 68 } 69 }).forEach(c->System.out.println(c));//打印功能 70 } 71 72 /** 73 * 多字段 模糊查询 并 整合 并 分页 74 */ 75 @Test 76 public void get03(){ 77 Page<Account> byAcNameLike= accountDao.findAll(new Specification<Account>() { 78 @Override 79 public Predicate toPredicate(Root<Account> root, CriteriaQuery<?> query, CriteriaBuilder cb) { 80 // 创建 根据模糊查询的条件 81 Predicate acName = cb.like(root.get("acName"), "%2%"); 82 Predicate acAddress = cb.like(root.get("acAddress"), "%中%"); 83 // 组合两个条件 84 Predicate predicate = cb.and(acName, acAddress); 85 return predicate; 86 } 87 },new PageRequest(0,3)); 88 long totalElements = byAcNameLike.getTotalElements(); 89 System.out.println(totalElements+"总的条数"); 90 int totalPages = byAcNameLike.getTotalPages(); 91 System.out.println(totalPages+"总的页数"); 92 List<Account> content = byAcNameLike.getContent(); 93 for(Account account:content){ 94 System.out.println(account); 95 } 96 } 97 }