开发环境:
- IntelliJ IDEA 15.0.4
- JDK1.6_43
项目整体如下:
maven 配置文件如下
4.0.0
com.marry.fquery
linyi
1.0
UTF-8
UTF-8
4.2.5.RELEASE
4.3.11.Final
4.1.4
javax.servlet
servlet-api
3.0-alpha-1
provided
org.aspectj
aspectjweaver
1.7.1
junit
junit
4.11
test
org.springframework
spring-core
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-orm
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-test
${spring.version}
org.hibernate
hibernate-core
${hibernate.version}
org.hibernate
hibernate-entitymanager
${hibernate.version}
org.hibernate
hibernate-ehcache
${hibernate.version}
org.springframework.data
spring-data-jpa
1.7.1.RELEASE
com.alibaba
druid
1.0.29
com.alibaba
fastjson
1.2.27
log4j
log4j
1.2.17
org.slf4j
slf4j-api
1.7.19
org.slf4j
slf4j-log4j12
1.7.19
ojdbc
ojdbc14
10.2.0.4.0
org.apache.commons
commons-lang3
3.4
com.google.guava
guava
18.0
com.querydsl
querydsl-jpa
${querydsl.version}
com.querydsl
querydsl-apt
${querydsl.version}
org.apache.maven.plugins
maven-compiler-plugin
1.6
1.6
FQuery
这里有童鞋会发现为啥还添加了
hibernate
的jar包啊,其实这里不是用的hibernate而是用的hibernate
的相关实现,贴个图大家就看懂了 由于不同的orm框架之间有区别,spring Data Jpa可以方便的在不同的orm中间进行切换
添加spring上下文配置文件applicationContext.xml
true
true
web.xml配置
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
true
dispatcherServlet
*.do
dispatcherServlet
*.html
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
true
encoding
UTF-8
encodingFilter
/*
Spring OpenEntityManagerInViewFilter
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter
entityManagerFactoryBean
entityManagerFactory
Spring OpenEntityManagerInViewFilter
/*
DruidWebStatFilter
com.alibaba.druid.support.http.WebStatFilter
exclusions
*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
DruidWebStatFilter
/*
DruidWebStatFilter
com.alibaba.druid.support.http.StatViewServlet
resetEnable
true
loginUsername
druid
loginPassword
druid
DruidWebStatFilter
/druid/*
数据库配置文件 jdbc.properties
url: jdbc:oracle:thin:@127.0.0.1:1521:orcl
driverClassName: oracle.jdbc.driver.OracleDriver
jdbc.username: pubr
password: 123
filters: stat
maxActive: 50
initialSize: 1
maxWait: 60000
minIdle: 10
maxIdle: 15
timeBetweenEvictionRunsMillis: 6000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
maxOpenPreparedStatements: 20
removeAbandoned: true
removeAbandonedTimeout: 1800
logAbandoned: true
hibernate.dialect=org.hibernate.dialect.OracleDialect
springmvc的配置文件 spring-mvc.xml
text/plain;charset=UTF-8
text/html;charset=UTF-8
application/json;charset=UTF-8
application/x-www-form-urlencoded;charset=UTF-8
DisableCircularReferenceDetect
BaseReposity.class
@NoRepositoryBean
public interface BaseReposity extends JpaRepository,JpaSpecificationExecutor{
}
由于JpaRepository已经有
Repository
属性了 所以我们自己为了不在所有的Jpa类中都写重复的代码所建的接口 添加个@NoRepositoryBean
声明
BuildingJpa.class
public interface BuildingJpa extends BaseReposity {
}
BuildingServiceTest.class
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class BuildingServiceTest {
@Resource
BuildingJpa buildingJpa;
@Test
public void testGetBuildingById() throws Exception {
System.out.println(" = " );
Building building=buildingJpa.findOne(111L);
}
}
注意 这里需要使用 findOne() 方法 不要使用 getOne() 否则你会发现得到的所有的对象均为空