springdata

<div id="cnblogs\_post\_body" class="blogpost-body"><p align="left">&nbsp;使用:maven+Spring+jpa+Junit4</p> <p align="left">&nbsp;查询方式:SQL,JPQL查询,Specification多条件复杂查询</p> <p align="left">&nbsp;返回类型:list&lt;POJO&gt;,list&lt;Stinrg&gt;,list&lt;Object&gt;,Page&lt;Object&gt;</p> <p align="left">git源码地址:https://github.com/litblank/SpringFrame/tree/master/DEMO/SpringData\_jpa</p> <p align="left"><img src="https://images2017.cnblogs.com/blog/990457/201801/990457-20180111104540816-935032293.png" alt=""></p> <p>&nbsp;</p> <p align="left"><strong>1. </strong><strong>Pom.xml</strong></p> <p align="left"><strong>&nbsp;</strong></p> <div class="cnblogs\_code" onclick="cnblogs\_code\_show('c154f425-902e-4a29-b7cf-1d04e2ba7d1f')"><img id="code\_img\_closed\_c154f425-902e-4a29-b7cf-1d04e2ba7d1f" class="code\_img\_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code\_img\_opened\_c154f425-902e-4a29-b7cf-1d04e2ba7d1f" class="code\_img\_opened" style="display: none;" onclick="cnblogs\_code\_hide('c154f425-902e-4a29-b7cf-1d04e2ba7d1f',event)" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt=""> <div id="cnblogs\_code\_open\_c154f425-902e-4a29-b7cf-1d04e2ba7d1f" class="cnblogs\_code\_hide"> <pre>&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<span style="color: #000000;"> xsi:schemaLocation</span>="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4\_0\_0.xsd"&gt; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;groupId&gt;com.litblack&lt;/groupId&gt; &lt;artifactId&gt;SpringData\_jpa&lt;/artifactId&gt; &lt;packaging&gt;war&lt;/packaging&gt; &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt; &lt;name&gt;SpringData\_jpa Maven Webapp&lt;/name&gt; &lt;url&gt;http:<span style="color: #008000;">//</span><span style="color: #008000;">maven.apache.org&lt;/url&gt;</span> &lt;properties&gt; &lt;spring.version&gt;4.3.4.RELEASE&lt;/spring.version&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;junit&lt;/groupId&gt; &lt;artifactId&gt;junit&lt;/artifactId&gt; &lt;version&gt;3.8.1&lt;/version&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; &lt;!-- jpa --&gt; &lt;dependency&gt; &lt;groupId&gt;org.hibernate&lt;/groupId&gt; &lt;artifactId&gt;hibernate-core&lt;/artifactId&gt; &lt;version&gt;4.3.8.Final&lt;/version&gt; &lt;exclusions&gt; &lt;exclusion&gt; &lt;groupId&gt;org.javassist&lt;/groupId&gt; &lt;artifactId&gt;javassist&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;/exclusions&gt; &lt;/dependency&gt; &lt;!-- &lt;dependency&gt; &lt;groupId&gt;org.hibernate.javax.persistence&lt;/groupId&gt; &lt;artifactId&gt;hibernate-jpa-2.0-api&lt;/artifactId&gt; &lt;version&gt;1.0.1.Final&lt;/version&gt; &lt;/dependency&gt; --&gt; &lt;dependency&gt; &lt;groupId&gt;org.hibernate&lt;/groupId&gt; &lt;artifactId&gt;hibernate-entitymanager&lt;/artifactId&gt; &lt;version&gt;4.3.11.Final&lt;/version&gt; &lt;exclusions&gt; &lt;exclusion&gt; &lt;groupId&gt;org.javassist&lt;/groupId&gt; &lt;artifactId&gt;javassist&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;/exclusions&gt; &lt;/dependency&gt; &lt;!-- oracle --&gt; &lt;dependency&gt; &lt;groupId&gt;ojdbc&lt;/groupId&gt; &lt;artifactId&gt;ojdbc6&lt;/artifactId&gt; &lt;version&gt;11.2.0.4&lt;/version&gt; &lt;/dependency&gt; &lt;!-- mysql --&gt; &lt;dependency&gt; &lt;groupId&gt;mysql&lt;/groupId&gt; &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt; &lt;version&gt;5.1.6&lt;/version&gt; &lt;/dependency&gt; &lt;!-- ali 数据源连接 --&gt; &lt;dependency&gt; &lt;groupId&gt;com.alibaba&lt;/groupId&gt; &lt;artifactId&gt;druid&lt;/artifactId&gt; &lt;version&gt;1.0.31&lt;/version&gt; &lt;/dependency&gt;
1 &lt;dependency&gt; 2 &lt;groupId&gt;javassist&lt;/groupId&gt; 3 &lt;artifactId&gt;javassist&lt;/artifactId&gt; 4 &lt;version&gt;3.12.1.GA&lt;/version&gt; 5 &lt;/dependency&gt; 6 7 &lt;!-- Test --&gt; 8 &lt;dependency&gt; 9 &lt;groupId&gt;org.springframework&lt;/groupId&gt; 10 &lt;artifactId&gt;spring-test&lt;/artifactId&gt; 11 &lt;version&gt;${spring.version}&lt;/version&gt; 12 &lt;scope&gt;test&lt;/scope&gt; 13 &lt;/dependency&gt; 14 &lt;dependency&gt; 15 &lt;groupId&gt;junit&lt;/groupId&gt; 16 &lt;artifactId&gt;junit&lt;/artifactId&gt; 17 &lt;version&gt;4.12&lt;/version&gt; 18 &lt;/dependency&gt; 19 20 &lt;dependency&gt; 21 &lt;groupId&gt;org.springframework&lt;/groupId&gt; 22 &lt;artifactId&gt;spring-context&lt;/artifactId&gt; 23 &lt;version&gt;${spring.version}&lt;/version&gt; 24 &lt;/dependency&gt; 25 &lt;dependency&gt; 26 &lt;groupId&gt;org.springframework&lt;/groupId&gt; 27 &lt;artifactId&gt;spring-oxm&lt;/artifactId&gt; 28 &lt;version&gt;${spring.version}&lt;/version&gt; 29 &lt;/dependency&gt; 30 &lt;dependency&gt; 31 &lt;groupId&gt;org.springframework&lt;/groupId&gt; 32 &lt;artifactId&gt;spring-orm&lt;/artifactId&gt; 33 &lt;version&gt;${spring.version}&lt;/version&gt; 34 &lt;/dependency&gt; 35 36 &lt;!-- springdata --&gt; 37 &lt;dependency&gt; 38 &lt;groupId&gt;org.springframework.data&lt;/groupId&gt; 39 &lt;artifactId&gt;spring-data-jpa&lt;/artifactId&gt; 40 &lt;version&gt;1.11.1.RELEASE&lt;/version&gt; 41 &lt;/dependency&gt; 42 &lt;dependency&gt; 43 &lt;groupId&gt;org.springframework.data&lt;/groupId&gt; 44 &lt;artifactId&gt;spring-data-commons-core&lt;/artifactId&gt; 45 &lt;version&gt;1.4.1.RELEASE&lt;/version&gt; 46 &lt;/dependency&gt;

</dependencies> <build> <finalName>SpringData_jpa</finalName> </build> </project></pre>

</div> <span class="cnblogs\_code\_collapse">pom.xml</span></div> <p>&nbsp;</p> <p align="left"><strong>2. </strong><strong>Spring-config.xml</strong></p> <p align="left"><strong>&nbsp;</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>&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;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"&gt; </span> 15&lt;context:component-scan base-<span style="color: #0000ff;">package</span>="com.litblack.jpa"&gt;&lt;/context:component-scan&gt; 16 17&lt;!-- 配置Spring Data JPA扫描目录, repository 包 --&gt; 18&lt;jpa:repositories base-<span style="color: #0000ff;">package</span>="com.litblack.jpa" /&gt; 19 20&lt;!-- 定义实体管理器工厂 --&gt; 21&lt;bean id="entityManagerFactory" <span style="color: #0000ff;">class</span>="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"&gt; 22 &lt;property name="dataSource" ref="dataSource" /&gt; 23 &lt;!-- 扫描pojo --&gt; 24 &lt;property name="packagesToScan" value="com.litblack.jpa" /&gt; 25 &lt;property name="persistenceProvider"&gt; 26 &lt;bean <span style="color: #0000ff;">class</span>="org.hibernate.ejb.HibernatePersistence" /&gt; 27 &lt;/property&gt; 28 &lt;property name="jpaVendorAdapter"&gt; 29 &lt;bean <span style="color: #0000ff;">class</span>="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"&gt; 30 &lt;property name="generateDdl" value="true" /&gt; 31 &lt;property name="database" value="MYSQL" /&gt; 32 &lt;!-- &lt;property name="database" value="ORACLE" /&gt; --&gt; 33 &lt;!-- &lt;property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" /&gt; --&gt; 34 &lt;property name="showSql" value="true" /&gt; 35 &lt;/bean&gt; 36 &lt;/property&gt; 37 &lt;property name="jpaDialect"&gt; 38 &lt;bean <span style="color: #0000ff;">class</span>="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /&gt; 39 &lt;/property&gt; 40 &lt;property name="jpaPropertyMap"&gt; 41 &lt;map&gt; 42 &lt;entry key="hibernate.generate_statistics" value="false" /&gt;&lt;!-- 关闭打印的日志 --&gt; 43 &lt;entry key="hibernate.query.substitutions" value="true 1, false 0" /&gt; 44 &lt;entry key="hibernate.default_batch_fetch_size" value="16" /&gt; 45 &lt;entry key="hibernate.max_fetch_depth" value="2" /&gt; 46 &lt;entry key="hibernate.bytecode.use_reflection_optimizer" value="true" /&gt; 47 &lt;entry key="hibernate.cache.use_second_level_cache" value="false" /&gt; 48 &lt;entry key="hibernate.cache.use_query_cache" value="false" /&gt; 49 &lt;/map&gt; 50 &lt;/property&gt; 51&lt;/bean&gt; 52 53&lt;!-- 数据源 --&gt; 54&lt;bean id="dataSource" <span style="color: #0000ff;">class</span>="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"&gt; 55 &lt;property name="driverClassName" value="com.mysql.jdbc.Driver" /&gt; 56 &lt;property name="url" value="jdbc:mysql://localhost:3306/cyd?useUnicode=true&amp;amp;characterEncoding=UTF-8" /&gt; 57 &lt;property name="username" value="root" /&gt; 58 &lt;property name="password" value="root" /&gt; 59&lt;/bean&gt; 60&lt;!-- 配置事务管理器 --&gt; 61&lt;bean id="transactionManager" <span style="color: #0000ff;">class</span>="org.springframework.orm.jpa.JpaTransactionManager"&gt; 62 &lt;property name="entityManagerFactory" ref="entityManagerFactory" /&gt; 63&lt;/bean&gt; 64 65&lt;!-- 启用 annotation事务 --&gt; 66&lt;tx:annotation-driven transaction-manager="transactionManager" /&gt;

</beans></pre>

</div> <span class="cnblogs\_code\_collapse"><strong>Spring-config.xml</strong></span></div> <p>&nbsp;</p> <p align="left"><strong>3. </strong><strong>UserBean.java</strong></p> <p align="left"><strong>&nbsp;</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>&nbsp;</p> <p align="left"><strong>4. </strong><strong>UserBeanRepository.java</strong></p> <p>&nbsp;</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>
<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>&nbsp;</p> <p align="left"><strong>5. </strong><strong>BaseJunit4Test.java</strong></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.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 &lt; 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>&lt;UserBean&gt; list=<span style="color: #000000;">userRepository.findAll(); 22 </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i &lt; 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>&lt;UserBean&gt; 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 &lt; 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>&lt;String&gt; 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 &lt; 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>&lt;Object&gt; 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 &lt; 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>&lt;Object&gt; 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 &lt; 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>&lt;UserBean&gt; 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 &lt; 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>&lt;Object&gt; 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 &lt; 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>&nbsp;&nbsp; &nbsp; * Hql 能返回list&lt;Map&gt;<br>&nbsp;&nbsp; &nbsp; */<br>&nbsp;&nbsp; &nbsp;@Test<br>&nbsp;&nbsp; &nbsp;public void get_sql_obj_morestr1(){<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;List&lt;Map&lt;String,Object&gt;&gt; list=userRepository.find_SQL_obj_map();<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;for (int i = 0; i &lt; list.size(); i++) {<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Map&lt;String,Object&gt; obj = list.get(i);<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;System.out.println(obj);<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp; &nbsp;} 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&lt;Object&gt; p=<span style="color: #000000;">userRepository.find_SQL_obj(page); 113 List</span>&lt;Object&gt; list=<span style="color: #000000;">p.getContent(); 114 </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i &lt; 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>&lt;UserBean&gt; p=userRepository.findAll(<span style="color: #0000ff;">new</span> Specification&lt;UserBean&gt;<span style="color: #000000;">() { 126 127 </span><span style="color: #0000ff;">public</span> Predicate toPredicate(Root&lt;UserBean&gt; root, CriteriaQuery&lt;?&gt;<span style="color: #000000;"> query, CriteriaBuilder cb) { 128 Predicate stuNameLike </span>= cb.like(root.&lt;String&gt; get("userName"), "%user_%"<span style="color: #000000;">); 129 Order oderby </span>=cb.desc(root.&lt;String&gt; 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>&lt;UserBean&gt; list=<span style="color: #000000;">p.getContent(); 136 </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i &lt; 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> &lt;T&gt;<span style="color: #000000;"> Specification base_Specification(Class T){ 148 </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span> Specification&lt;T&gt;<span style="color: #000000;">(){ 149 </span><span style="color: #0000ff;">public</span> Predicate toPredicate(Root&lt;T&gt; root, CriteriaQuery&lt;?&gt;<span style="color: #000000;"> query, CriteriaBuilder cb) { 150 Predicate predicate</span>=<span style="color: #000000;">cb.conjunction(); 151 List</span>&lt;Expression&lt;Boolean&gt;&gt; expression=<span style="color: #000000;">predicate.getExpressions(); 152 expression.add(cb.like(root.</span>&lt;String&gt; 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>&nbsp;</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;">&nbsp;</div> </div>原文地址:https://www.cnblogs.com/litblank/p/8267333.html</div>
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

springdata - HelloWorld