您的位置:首页 > 编程语言 > Java开发

mybatis + spring

2013-11-12 17:05 323 查看
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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: