1 <dependency> 2 <groupId>javassist</groupId> 3 <artifactId>javassist</artifactId> 4 <version>3.12.1.GA</version> 5 </dependency> 6 7 <!-- Test --> 8 <dependency> 9 <groupId>org.springframework</groupId> 10 <artifactId>spring-test</artifactId> 11 <version>${spring.version}</version> 12 <scope>test</scope> 13 </dependency> 14 <dependency> 15 <groupId>junit</groupId> 16 <artifactId>junit</artifactId> 17 <version>4.12</version> 18 </dependency> 19 20 <dependency> 21 <groupId>org.springframework</groupId> 22 <artifactId>spring-context</artifactId> 23 <version>${spring.version}</version> 24 </dependency> 25 <dependency> 26 <groupId>org.springframework</groupId> 27 <artifactId>spring-oxm</artifactId> 28 <version>${spring.version}</version> 29 </dependency> 30 <dependency> 31 <groupId>org.springframework</groupId> 32 <artifactId>spring-orm</artifactId> 33 <version>${spring.version}</version> 34 </dependency> 35 36 <!-- springdata --> 37 <dependency> 38 <groupId>org.springframework.data</groupId> 39 <artifactId>spring-data-jpa</artifactId> 40 <version>1.11.1.RELEASE</version> 41 </dependency> 42 <dependency> 43 <groupId>org.springframework.data</groupId> 44 <artifactId>spring-data-commons-core</artifactId> 45 <version>1.4.1.RELEASE</version> 46 </dependency>
</dependencies> <build> <finalName>SpringData_jpa</finalName> </build> </project></pre>
</div> <span class="cnblogs\_code\_collapse">pom.xml</span></div> <p> </p> <p align="left"><strong>2. </strong><strong>Spring-config.xml</strong></p> <p align="left"><strong> </strong></p> <div class="cnblogs\_code" onclick="cnblogs\_code\_show('c16b98db-b652-4ecd-8e54-601e791136d0')"><img id="code\_img\_closed\_c16b98db-b652-4ecd-8e54-601e791136d0" class="code\_img\_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code\_img\_opened\_c16b98db-b652-4ecd-8e54-601e791136d0" class="code\_img\_opened" style="display: none;" onclick="cnblogs\_code\_hide('c16b98db-b652-4ecd-8e54-601e791136d0',event)" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt=""> <div id="cnblogs\_code\_open\_c16b98db-b652-4ecd-8e54-601e791136d0" class="cnblogs\_code\_hide"> <pre><?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"<span style="color: #000000;"> xmlns:xsi</span>="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"<span style="color: #000000;"> xmlns:aop</span>="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"<span style="color: #000000;"> xmlns:p</span>="http://www.springframework.org/schema/p" xmlns:cache="http://www.springframework.org/schema/cache"<span style="color: #000000;"> xmlns:jpa</span>="http://www.springframework.org/schema/data/jpa"<span style="color: #000000;">1xsi:schemaLocation</span>="http://www.springframework.org/schema/beans 2 http:<span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/beans/spring-beans-3.1.xsd </span> 3 http:<span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/context </span> 4 http:<span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/context/spring-context-3.1.xsd </span> 5 http:<span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/aop </span> 6 http:<span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/aop/spring-aop-3.1.xsd </span> 7 http:<span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/tx </span> 8 http:<span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/tx/spring-tx-3.1.xsd</span> 9 http:<span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/cache </span> 10 http:<span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/cache/spring-cache-3.1.xsd</span> 11 http:<span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/data/jpa</span> 12 http:<span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/data/jpa/spring-jpa.xsd</span> 13 http:<span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/data/repository</span> 14 http:<span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/data/repository/spring-repository-1.5.xsd"> </span> 15<context:component-scan base-<span style="color: #0000ff;">package</span>="com.litblack.jpa"></context:component-scan> 16 17<!-- 配置Spring Data JPA扫描目录, repository 包 --> 18<jpa:repositories base-<span style="color: #0000ff;">package</span>="com.litblack.jpa" /> 19 20<!-- 定义实体管理器工厂 --> 21<bean id="entityManagerFactory" <span style="color: #0000ff;">class</span>="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 22 <property name="dataSource" ref="dataSource" /> 23 <!-- 扫描pojo --> 24 <property name="packagesToScan" value="com.litblack.jpa" /> 25 <property name="persistenceProvider"> 26 <bean <span style="color: #0000ff;">class</span>="org.hibernate.ejb.HibernatePersistence" /> 27 </property> 28 <property name="jpaVendorAdapter"> 29 <bean <span style="color: #0000ff;">class</span>="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 30 <property name="generateDdl" value="true" /> 31 <property name="database" value="MYSQL" /> 32 <!-- <property name="database" value="ORACLE" /> --> 33 <!-- <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> --> 34 <property name="showSql" value="true" /> 35 </bean> 36 </property> 37 <property name="jpaDialect"> 38 <bean <span style="color: #0000ff;">class</span>="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> 39 </property> 40 <property name="jpaPropertyMap"> 41 <map> 42 <entry key="hibernate.generate_statistics" value="false" /><!-- 关闭打印的日志 --> 43 <entry key="hibernate.query.substitutions" value="true 1, false 0" /> 44 <entry key="hibernate.default_batch_fetch_size" value="16" /> 45 <entry key="hibernate.max_fetch_depth" value="2" /> 46 <entry key="hibernate.bytecode.use_reflection_optimizer" value="true" /> 47 <entry key="hibernate.cache.use_second_level_cache" value="false" /> 48 <entry key="hibernate.cache.use_query_cache" value="false" /> 49 </map> 50 </property> 51</bean> 52 53<!-- 数据源 --> 54<bean id="dataSource" <span style="color: #0000ff;">class</span>="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> 55 <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 56 <property name="url" value="jdbc:mysql://localhost:3306/cyd?useUnicode=true&amp;characterEncoding=UTF-8" /> 57 <property name="username" value="root" /> 58 <property name="password" value="root" /> 59</bean> 60<!-- 配置事务管理器 --> 61<bean id="transactionManager" <span style="color: #0000ff;">class</span>="org.springframework.orm.jpa.JpaTransactionManager"> 62 <property name="entityManagerFactory" ref="entityManagerFactory" /> 63</bean> 64 65<!-- 启用 annotation事务 --> 66<tx:annotation-driven transaction-manager="transactionManager" />
</beans></pre>
</div> <span class="cnblogs\_code\_collapse"><strong>Spring-config.xml</strong></span></div> <p> </p> <p align="left"><strong>3. </strong><strong>UserBean.java</strong></p> <p align="left"><strong> </strong></p> <div class="cnblogs\_code" onclick="cnblogs\_code\_show('05cb6902-2051-4f65-b406-ac0f83c42a41')"><img id="code\_img\_closed\_05cb6902-2051-4f65-b406-ac0f83c42a41" class="code\_img\_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code\_img\_opened\_05cb6902-2051-4f65-b406-ac0f83c42a41" class="code\_img\_opened" style="display: none;" onclick="cnblogs\_code\_hide('05cb6902-2051-4f65-b406-ac0f83c42a41',event)" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt=""> <div id="cnblogs\_code\_open\_05cb6902-2051-4f65-b406-ac0f83c42a41" class="cnblogs\_code\_hide"> <pre><span style="color: #0000ff;">package</span><span style="color: #000000;"> com.litblack.jpa;</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.Date;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.persistence.Column; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.persistence.Entity; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.persistence.GeneratedValue; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.persistence.Id; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.persistence.Table;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.hibernate.annotations.GenericGenerator; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.stereotype.Component;
@Table(name </span>= "cyd_sys_user"<span style="color: #000000;">) @Entity </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> UserBean {
1@Id 2@GeneratedValue(generator </span>= "system_uuid"<span style="color: #000000;">) 3@GenericGenerator(name </span>= "system_uuid", strategy = "uuid"<span style="color: #000000;">) 4</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String id; 5@Column(name</span>="user_name"<span style="color: #000000;">) 6</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String userName; 7@Column(name</span>="create_time"<span style="color: #000000;">) 8</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Date createTime; 9 10</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String getId() { 11 </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> id; 12} 13 14</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setId(String id) { 15 </span><span style="color: #0000ff;">this</span>.id =<span style="color: #000000;"> id; 16} 17 18</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String getUserName() { 19 </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> userName; 20} 21 22</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setUserName(String userName) { 23 </span><span style="color: #0000ff;">this</span>.userName =<span style="color: #000000;"> userName; 24} 25 26</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Date getCreateTime() { 27 </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> createTime; 28} 29 30</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setCreateTime(Date createTime) { 31 </span><span style="color: #0000ff;">this</span>.createTime =<span style="color: #000000;"> createTime; 32} 33 34@Override 35</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String toString() { 36 </span><span style="color: #0000ff;">return</span> "UserBean [id=" + id + ", userName=" + userName + ", createTime=" + createTime + "]"<span style="color: #000000;">; 37}
}</span></pre>
</div> <span class="cnblogs\_code\_collapse">POJO</span></div> <p> </p> <p align="left"><strong>4. </strong><strong>UserBeanRepository.java</strong></p> <p> </p> <div class="cnblogs\_code"><div class="cnblogs\_code\_toolbar"><span class="cnblogs\_code\_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="https://my.oschina.net//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div> <pre><span style="color: #0000ff;">package</span><span style="color: #000000;"> com.litblack.jpa;</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.List; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.Map;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.data.domain.Page; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.data.domain.Pageable; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.data.jpa.repository.JpaRepository; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.data.jpa.repository.JpaSpecificationExecutor; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.data.jpa.repository.Query; </span><span style="color: #008000;">/**</span><span style="color: #008000;">
-
SQL,JPQL查询
-
返回:list<POJO>,list<Stinrg>,list<Object>,Page<Object>
-
不能返回MAP
-
</span><span style="color: #808080;">@author</span><span style="color: #008000;"> chenyd
-
2018年1月10日 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">interface</span> UserBeanRepository <span style="color: #0000ff;">extends</span> JpaRepository<UserBean, Long>, JpaSpecificationExecutor<UserBean><span style="color: #000000;">{
UserBean findByUserName(String username);
@Query(</span>"from UserBean where userName =?1"<span style="color: #000000;">) List</span><UserBean><span style="color: #000000;"> find_Jpql_list_obj(String username);
@Query(</span>"select userName from UserBean where userName =?1"<span style="color: #000000;">) List</span><String><span style="color: #000000;"> find_Jpql_list_one(String username);
@Query(</span>"select userName,createTime from UserBean where userName =?1"<span style="color: #000000;">) List</span><Object><span style="color: #000000;"> find_Jpql_list_morefield(String username);
@Query(</span>"select userName,createTime from UserBean "<span style="color: #000000;">) List</span><Object><span style="color: #000000;"> find_Jpql_list_pojo_morefield();
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
- 若返回类型为POJO,必须是所有POJO的所有字段,不能只查询某个字段 </span><span style="color: #008000;">*/</span><span style="color: #000000;"> @Query(value</span>="select * from cyd_sys_user",nativeQuery=<span style="color: #0000ff;">true</span><span style="color: #000000;">) List</span><UserBean><span style="color: #000000;"> find_SQL_pojo();
@Query(value</span>="select user_name,name from cyd_sys_user,t_user",nativeQuery=<span style="color: #0000ff;">true</span><span style="color: #000000;">) List</span><Object><span style="color: #000000;"> find_SQL_obj();<br><br> @Query(value = "select new map(userName,createTime) from UserBean")<br> List<Map<String,Object>> find_SQL_obj_map();
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
- 分页需要 #pageable 标识
- NativeJpaQuery
- </span><span style="color: #808080;">@param</span><span style="color: #008000;"> pageable
- </span><span style="color: #808080;">@return</span> <span style="color: #008000;">/</span><span style="color: #000000;"> @Query(value</span>="select user_name,name from cyd_sys_user,t_user /#pageable*/ ",countQuery="select count(*) from cyd_sys_user,t_user",nativeQuery=<span style="color: #0000ff;">true</span><span style="color: #000000;">) Page</span><Object><span style="color: #000000;"> find_SQL_obj(Pageable pageable); }</span></pre>
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.Date; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.List; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.Map;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.persistence.criteria.CriteriaBuilder; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.persistence.criteria.CriteriaQuery; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.persistence.criteria.Expression; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.persistence.criteria.Order; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.persistence.criteria.Predicate; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.persistence.criteria.Root;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.junit.Test; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.junit.runner.RunWith; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.beans.factory.annotation.Autowired; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.data.domain.Page; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.data.domain.PageRequest; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.data.domain.Pageable; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.data.domain.Sort; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.data.domain.Sort.Direction; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.data.jpa.domain.Specification; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.test.context.ContextConfiguration; </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.</span><span style="color: #0000ff;">class</span><span style="color: #000000;">) @ContextConfiguration(locations </span>= { "classpath*:/spring-config.xml"<span style="color: #000000;"> }) </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> BaseJunit4Test {
1@Autowired 2</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> UserBeanRepository userRepository; 3 4</span><span style="color: #008000;">/**</span><span style="color: #008000;"> 5 * 保存 6 </span><span style="color: #008000;">*/</span> 7<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> save_obj() { 8 System.out.println(userRepository); 9 </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i < 100; i++<span style="color: #000000;">) { 10 UserBean entity </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> UserBean(); 11 entity.setUserName(</span>"user_" +<span style="color: #000000;"> i); 12 entity.setCreateTime(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Date()); 13 userRepository.save(entity); 14 } 15 16} 17</span><span style="color: #008000;">/**</span><span style="color: #008000;"> 18 * 查询-所有 19 </span><span style="color: #008000;">*/</span> 20<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> get_ALL_obj(){ 21 List</span><UserBean> list=<span style="color: #000000;">userRepository.findAll(); 22 </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i < list.size(); i++<span style="color: #000000;">) { 23 UserBean obj </span>=<span style="color: #000000;"> list.get(i); 24 System.out.println(obj.getCreateTime()); 25 } 26} 27</span><span style="color: #008000;">/**</span><span style="color: #008000;"> 28 * 查询-one-obj,自定义接口 29 </span><span style="color: #008000;">*/</span> 30<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> get_one_obj(){ 31 UserBean obj </span>= userRepository.findByUserName("user_1"<span style="color: #000000;">); 32 System.out.println(obj.toString()); 33} 34</span><span style="color: #008000;">/**</span><span style="color: #008000;"> 35 * 根据JQPL查询,获取一个包含所有字段的OBJ 36 * 返回: 一个pojo 集合 37 </span><span style="color: #008000;">*/</span> 38<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> get_jqpl_obj(){ 39 List</span><UserBean> list=userRepository.find_Jpql_list_obj("user_2"<span style="color: #000000;">); 40 </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i < list.size(); i++<span style="color: #000000;">) { 41 UserBean obj </span>=<span style="color: #000000;"> list.get(i); 42 System.out.println(obj.toString()); 43 } 44} 45</span><span style="color: #008000;">/**</span><span style="color: #008000;"> 46 * 根据JQPL查询,获取一个字段, 47 * 返回:一个字段 48 </span><span style="color: #008000;">*/</span> 49<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> get_jqpl_onestr(){ 50 List</span><String> list=userRepository.find_Jpql_list_one("user_2"<span style="color: #000000;">); 51 </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i < list.size(); i++<span style="color: #000000;">) { 52 String obj </span>=<span style="color: #000000;"> list.get(i); 53 System.out.println(obj.toString()); 54 } 55} 56</span><span style="color: #008000;">/**</span><span style="color: #008000;"> 57 * 根据JQPL查询,一行数据,获取多个字段 58 * 返回:object 不是POJO,不是string[]。是Object[] 59 * 注意:每个数据类型与POJO类型一致 60 </span><span style="color: #008000;">*/</span> 61<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> get_jqpl_morestr(){ 62 List</span><Object> list=userRepository.find_Jpql_list_morefield("user_2"<span style="color: #000000;">); 63 </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i < list.size(); i++<span style="color: #000000;">) { 64 Object[] obj </span>=<span style="color: #000000;"> (Object[]) list.get(i); 65 String username</span>=(String) obj[0<span style="color: #000000;">]; 66 Date date</span>=(Date) obj[1<span style="color: #000000;">]; 67 System.out.println(username</span>+"\t"+<span style="color: #000000;">date); 68 } 69} 70</span><span style="color: #008000;">/**</span><span style="color: #008000;"> 71 * JQPL 获取指定字段的多个POJO 72 </span><span style="color: #008000;">*/</span> 73<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> get_jqpl_pojo_morestr(){ 74 List</span><Object> list=<span style="color: #000000;">userRepository.find_Jpql_list_pojo_morefield(); 75 </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i < list.size(); i++<span style="color: #000000;">) { 76 Object[] obj </span>=<span style="color: #000000;"> (Object[]) list.get(i); 77 String username</span>=(String) obj[0<span style="color: #000000;">]; 78 Date date</span>=(Date) obj[1<span style="color: #000000;">]; 79 System.out.println(username</span>+"\t"+<span style="color: #000000;">date); 80 } 81} 82</span><span style="color: #008000;">/**</span><span style="color: #008000;"> 83 * SQL 获取POJO的所有字段,必须是所有POJO的所有字段 84 </span><span style="color: #008000;">*/</span> 85<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> get_sql_pojo_allstr(){ 86 List</span><UserBean> list=<span style="color: #000000;">userRepository.find_SQL_pojo(); 87 </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i < list.size(); i++<span style="color: #000000;">) { 88 UserBean obj </span>=<span style="color: #000000;"> list.get(i); 89 System.out.println(obj.toString()); 90 } 91} 92</span><span style="color: #008000;">/**</span><span style="color: #008000;"> 93 * SQL 获取多表查询的字段,可用于多表查询,组成临时表 94 * 注意:每个数据类型与POJO类型一致 95 </span><span style="color: #008000;">*/</span> 96<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> get_sql_obj_morestr(){ 97 List</span><Object> list=<span style="color: #000000;">userRepository.find_SQL_obj(); 98 </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i < list.size(); i++<span style="color: #000000;">) { 99 Object[] obj </span>=<span style="color: #000000;"> (Object[]) list.get(i); 100 String username</span>=(String) obj[0<span style="color: #000000;">]; 101 String name</span>=(String) obj[1<span style="color: #000000;">]; 102 System.out.println(username</span>+"\t"+<span style="color: #000000;">name); 103 } 104}<br>/**<br> * Hql 能返回list<Map><br> */<br> @Test<br> public void get_sql_obj_morestr1(){<br> List<Map<String,Object>> list=userRepository.find_SQL_obj_map();<br> for (int i = 0; i < list.size(); i++) {<br> Map<String,Object> obj = list.get(i);<br> System.out.println(obj);<br> }<br> } 105</span><span style="color: #008000;">/**</span><span style="color: #008000;"> 106 * 分页查询,先排序后分页 107 * select user_name,name from cyd_sys_user,t_user order by user_name desc limit ?, ? 108 </span><span style="color: #008000;">*/</span> 109<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> get_sql_obj_morestr_page(){ 110 Sort sort</span>=<span style="color: #0000ff;">new</span> Sort(Direction.DESC,"user_name"<span style="color: #000000;">); 111 Pageable page</span>=<span style="color: #0000ff;">new</span> PageRequest(2,10,sort);<span style="color: #008000;">//</span><span style="color: #008000;">第二页,每页10条</span> 112 Page<Object> p=<span style="color: #000000;">userRepository.find_SQL_obj(page); 113 List</span><Object> list=<span style="color: #000000;">p.getContent(); 114 </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i < list.size(); i++<span style="color: #000000;">) { 115 Object[] obj </span>=<span style="color: #000000;"> (Object[]) list.get(i); 116 String username</span>=(String) obj[0<span style="color: #000000;">]; 117 String name</span>=(String) obj[1<span style="color: #000000;">]; 118 System.out.println(username</span>+"\t"+<span style="color: #000000;">name); 119 } 120} 121</span><span style="color: #008000;">/**</span><span style="color: #008000;"> 122 * 多条件查询,分页,排序 123 </span><span style="color: #008000;">*/</span> 124<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> get_sql_obj_morestr_(){ 125 Page</span><UserBean> p=userRepository.findAll(<span style="color: #0000ff;">new</span> Specification<UserBean><span style="color: #000000;">() { 126 127 </span><span style="color: #0000ff;">public</span> Predicate toPredicate(Root<UserBean> root, CriteriaQuery<?><span style="color: #000000;"> query, CriteriaBuilder cb) { 128 Predicate stuNameLike </span>= cb.like(root.<String> get("userName"), "%user_%"<span style="color: #000000;">); 129 Order oderby </span>=cb.desc(root.<String> get("userName"<span style="color: #000000;">)); 130 </span><span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">null</span> !=<span style="color: #000000;"> stuNameLike) query.where(stuNameLike); 131 query.orderBy(oderby); 132 </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> stuNameLike; 133 } 134 },</span><span style="color: #0000ff;">new</span> PageRequest(0, 20<span style="color: #000000;">)); 135 List</span><UserBean> list=<span style="color: #000000;">p.getContent(); 136 </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i < list.size(); i++<span style="color: #000000;">) { 137 UserBean obj </span>=<span style="color: #000000;"> list.get(i); 138 System.out.println(obj.toString()); 139 } 140} 141 142</span><span style="color: #008000;">/**</span><span style="color: #008000;"> 143 * 通用单个实体查询 144 * </span><span style="color: #808080;">@param</span><span style="color: #008000;"> T 145 * </span><span style="color: #808080;">@return</span> 146 <span style="color: #008000;">*/</span> 147<span style="color: #0000ff;">public</span> <T><span style="color: #000000;"> Specification base_Specification(Class T){ 148 </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span> Specification<T><span style="color: #000000;">(){ 149 </span><span style="color: #0000ff;">public</span> Predicate toPredicate(Root<T> root, CriteriaQuery<?><span style="color: #000000;"> query, CriteriaBuilder cb) { 150 Predicate predicate</span>=<span style="color: #000000;">cb.conjunction(); 151 List</span><Expression<Boolean>> expression=<span style="color: #000000;">predicate.getExpressions(); 152 expression.add(cb.like(root.</span><String> get(""), ""<span style="color: #000000;">)); 153 </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> predicate; 154 }}; 155}
}</span></pre>
<div class="cnblogs\_code\_toolbar"><span class="cnblogs\_code\_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="https://my.oschina.net//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div> <p> </p> <h2>参考链接</h2> <div style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"><a href="http://www.cnblogs.com/rulian/p/6557471.html"><span style="font-size: 15px; font-family: Verdana; color: #ff6600; font-weight: bold;">Spring Data JPA 简单查询--接口方法 </span></a><a href="https://www.cnblogs.com/rulian/p/6557471.html"><span style="font-size: 15px; font-family: Verdana; color: #003884; font-weight: bold; text-decoration: underline;">https://www.cnblogs.com/rulian/p/6557471.html</span></a></div> <div style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"> <div style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"><a href="http://www.cnblogs.com/wucongyun/p/6730582.html">Spring data jpa中Query和@Query分别返回map结果集 </a><a href="https://www.cnblogs.com/wucongyun/p/6730582.html"><span style="color: #003884; text-decoration: underline;">https://www.cnblogs.com/wucongyun/p/6730582.html</span></a></div> <div style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"> <div style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"><a href="http://www.cnblogs.com/dreamroute/p/5173896.html"><span style="font-size: 15px; font-family: Verdana; color: #ff6600; font-weight: bold;">纯干货,Spring-data-jpa详解,全方位介绍。 <span style="color: #003884; text-decoration: underline;">http://www.cnblogs.com/dreamroute/p/5173896.html</span></span></a></div> <div style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;">转载 spring-data-jpa 介绍 复杂查询,包括多表关联,分页,排序等 <a href="http://blog.csdn.net/mendeliangyang/article/details/52366799"><span style="color: #003884; text-decoration: underline;">http://blog.csdn.net/mendeliangyang/article/details/52366799</span></a></div> </div> <div style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"> </div> </div>原文地址:https://www.cnblogs.com/litblank/p/8267333.html</div>