1,Mybatis整合spring,首先要导入相应的包
2,配置applicationContext.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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- 加载jdbc配置文件 -->
<context:property-placeholder location="classpath:properties/jdbc.properties"/>
<!-- 数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<!-- 设置JDBC驱动名称 -->
<property name="driverClass" value="${driverClassName}" />
<!-- 设置JDBC连接URL -->
<property name="jdbcUrl" value="${url}" />
<!-- 设置数据库用户名 -->
<property name="user" value="${username}" />
<!-- 设置数据库密码 -->
<property name="password" value="${password}" />
<!-- 设置连接池初始值 -->
<property name="initialPoolSize" value="${initialPoolSize}" />
<!-- 设置连接池最大值 -->
<property name="maxPoolSize" value="${maxPoolSize}" />
<!-- 设置连接池最小空闲值 -->
<property name="minPoolSize" value="${minPoolSize}" />
<!-- 每次增长的连接数 -->
<property name="acquireIncrement" value="${acquireIncrement}" />
<!-- 等待获取新连接的时间 -->
<property name="checkoutTimeout" value="${checkoutTimeout}" />
<!-- 每60秒检查每个连接的状态 -->
<property name="idleConnectionTestPeriod" value="${idleConnectionTestPeriod}" />
<!-- 超时等待时间以毫秒为单位 -->
<property name="maxIdleTime" value="${maxIdleTime}" />
</bean>
<!-- sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据源 -->
<property name="dataSource" ref="dataSource"/>
<!-- 指定配置文件 -->
<property name="configLocation" value="classpath:properties/configuration.xml"></property>
</bean>
<!-- 配置sqlSessionTemplate -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>
</bean>
<!-- 扫描包 -->
<context:component-scan base-package="hwt"></context:component-scan>
<!-- 事务 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:advice id="tx" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="get*" propagation="NOT_SUPPORTED"/>
<tx:method name="load*" propagation="NOT_SUPPORTED"/>
<tx:method name="find*" propagation="NOT_SUPPORTED" />
<tx:method name="*" propagation="NOT_SUPPORTED"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="pt" expression="execution(* hwt.service..*.*(..))"/>
<aop:advisor advice-ref="tx" pointcut-ref="pt"/>
</aop:config>
</beans>
Configuration.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 默认是在src目录下 -->
<!-- <settings>
<setting name="cacheEnabled" value="true"/>
lazyLoadingEnabled:true使用延迟加载,false禁用延迟加载。默认为true;
aggressiveLazyLoading:true启用时,当延迟加载开启时访问对象中一个懒对象属性时,
将完全加载这个对象的所有懒对象属性。
false,当延迟加载时,按需加载对象属性(即访问对象中一个懒对象属性,不会加载对象中其他的懒对象属性)。
默认为true
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
</settings>-->
<typeAliases>
<!-- 别名 -->
<typeAlias alias="Emp" type="hwt.pojo.Emp"/>
<typeAlias alias="Dep" type="hwt.pojo.Dep"/>
</typeAliases>
<!-- 配置环境,可以配置多个环境,默认default指定默认环境 -->
<!-- 如果在spring中配置了数据源,那么下面配置将失效 -->
<!-- <environments default="development">
<environment id="development">-->
<!-- 事务管理有JDBC和MANAGED两种
JDBC:有jdbc来进行事务的提交和回滚
MANAGED:不做处理,交给如spring来管理
-->
<!--<transactionManager type="JDBC" />-->
<!-- 数据源UNPOOLED,POOLED,JNDI -->
<!-- <dataSource type="POOLED">
<property name="driver" value="${driverClassName}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>-->
<!-- 对于mapper.xml映射文件的配置 -->
<mappers>
<mapper resource="hwt/Mapper/EmpMapper.xml"/>
<mapper resource="hwt/Mapper/DepMapper.xml"/>
<mapper resource="hwt/Mapper/CommonMapper.xml"/>
</mappers>
</configuration>
Mapper类
public interface CommonMapper {
/**
* 公共分页方法
* @param page
* @return
*/
public List paging(PageEntity page);
}
DAO实现:
@Repository
public class CommonDAO extends SqlSessionDaoSupport implements CommonMapper{
@Resource(name = "sqlSessionTemplate") 注意这里是给父类注入sqlSessionTemplate
private void setSqlSession(SqlSessionTemplate sqlSessionTemplate){
super.setSqlSessionTemplate(sqlSessionTemplate);
}
@Override
public List paging(PageEntity pageEntity) {
int page = pageEntity.getPage() == null || "".equals(pageEntity.getPage()) ? 1 : pageEntity.getPage(); //默认为第一页
int size = pageEntity.getSize() == null || "".equals(pageEntity.getSize()) ? 15 : pageEntity.getSize();; //默认每页15个
RowBounds rowBounds = new RowBounds((page-1)*size, size);
return getSqlSession().selectList(pageEntity.getSqlId(), pageEntity.getParams(), rowBounds);
}
}