1、创建maven项目
2、pom.xml文件
<properties>
<!-- 单元测试框架 -->
<!-- 需要导入相应jar包:junit-4.12.jar、hamcrest-core-1.3.rc2.jar、hamcrest-library-1.3.rc2.jar
JUnit4注解解释
1. @Test : 测试方法,测试程序会运行的方法,后边可以跟参数代表不同的测试,如(expected=XXException.class) 异常测试,
(timeout=xxx)超时测试
2. @Ignore : 被忽略的测试方法
3. @Before: 每一个测试方法之前运行
4. @After : 每一个测试方法之后运行
5. @BeforeClass: 所有测试开始之前运行
6. @AfterClass: 所有测试结束之后运行
-->
<junit.version>4.12</junit.version>
<!-- servlet-->
<servlet.version>3.0.1</servlet.version>
<!-- JSP Standard Tag Library,JSP标准标签库 需要jstl.jar和taglits.jar-->
<jstl.version>1.2</jstl.version>
<taglibs.version>1.1.2</taglibs.version>
<!-- hibernate -->
<hibernate.version>4.3.9.Final</hibernate.version>
<!-- mysql -->
<mysql.version>5.1.40</mysql.version>
<!-- spring -->
<spring.version>4.2.8.RELEASE</spring.version>
<!-- 高性能的 JDBC 连接池 -->
<hikaricp.version>2.6.1</hikaricp.version>
</properties>
3、applicationContext-db.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="close">
<constructor-arg>
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="dataSourceProperties">
<props>
<prop key="url">jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8</prop>
<prop key="user">user</prop>
<prop key="password">password</prop>
<prop key="prepStmtCacheSize">250</prop>
<prop key="prepStmtCacheSqlLimit">2048</prop>
<prop key="cachePrepStmts">false</prop> <!-- 缓存关闭,否则各种断开连接 -->
<prop key="useServerPrepStmts">true</prop>
</props>
</property>
<property name="poolName" value="springHikariCP" />
<property name="connectionTestQuery" value="SELECT 1" />
<property name="dataSourceClassName"
value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" />
<!-- 处于空闲状态的连接超时释放设置,单位毫秒 -->
<property name="idleTimeout" value="600000"/>
<!-- 链接的最大时长,单位毫秒 -->
<property name="maxLifetime" value="3600000"/>
<!-- 链接池可创建的最大连接数 -->
<property name="maximumPoolSize" value="15"/>
<!-- Default settings -->
<!-- 控制自动提交行为 default:true -->
<property name="autoCommit" value="true" />
<!--连接池获取的连接是否只读 default:false -->
<property name="readOnly" value="false" />
<!--控制连接的事务隔离等级 default:none -->
<property name="transactionIsolation" value="TRANSACTION_REPEATABLE_READ" />
<!--从池中获取连接的超时时间 default:30秒 -->
<property name="connectionTimeout" value="30000" />
<property name="allowPoolSuspension" value="false" />
<!--<property name="minimumIdle" value="20" /> -->
</bean>
</constructor-arg>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.connection.release_mode">auto</prop>
<prop key="hibernate.autoReconnect">true</prop>
<prop key="hibernate.jdbc.batch_size">30</prop>
</props>
</property>
<property name="packagesToScan" value="com.uu.demo.spring.ssh.entiey"/>
</bean>
<!-- 事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager" >
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 定义事务Advice,即定义事务实际控制者,这里借助HibernateTransactionManager来进行事务控制,并设置相关属性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
<tx:method name="find*" propagation="REQUIRED" read-only="true" />
<tx:method name="query*" propagation="REQUIRED" read-only="true" />
<tx:method name="search*" propagation="REQUIRED" read-only="true" />
<tx:method name="select*" propagation="REQUIRED" read-only="true" />
<tx:method name="count*" propagation="REQUIRED" read-only="true" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 事务切面配置 -->
<aop:config proxy-target-class="true">
<!-- 设定哪些POJO类将纳入事务控制 -->
<aop:pointcut id="txPoint"
expression="execution(* com.uu.demo.spring.ssh.dao..*(..))" />
<!-- 定义由谁来进行实际事务控制,这里当然是txAdvice(最终由HibernateTransactionManager来控制) -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"
order="1" />
</aop:config>
<!-- 扫描注解类 -->
<context:component-scan base-package="com.uu.demo.spring.ssh.dao"/>
</beans>