MyBatis与Spring集成
1、添加Maven依赖
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version></dependency><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version></dependency>
2、Spring配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <context:property-placeholder location="classpath:jdbc.properties"/> <context:annotation-config /> <context:component-scan base-package="com.tiamaes.**"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!-- <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/oracleGJDS"></property> </bean> --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" > <property name="driverClass" value="${dataSource.className}" /> <property name="jdbcUrl" value="${dataSource.url}" /> <property name="user" value="${dataSource.username}" /> <property name="password" value="${dataSource.password}" /> <property name="autoCommitOnClose" value="true" /> <property name="checkoutTimeout" value="${cpool.checkoutTimeout}" /> <property name="initialPoolSize" value="${cpool.minPoolSize}" /> <property name="minPoolSize" value="${cpool.minPoolSize}" /> <property name="maxPoolSize" value="${cpool.maxPoolSize}" /> <property name="maxIdleTime" value="${cpool.maxIdleTime}" /> <property name="maxIdleTimeExcessConnections" value="${cpool.maxIdleTimeExcessConnections}" /> <property name="acquireIncrement" value="${cpool.acquireIncrement}" /> <property name="acquireRetryAttempts" value="${cpool.acquireRetryAttempts}" /> <property name="acquireRetryDelay" value="${cpool.acquireRetryDelay}" /> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> <property name="rollbackOnCommitFailure" value="true"/> </bean> <!-- 事务装配 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="insert*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="delete*" propagation="REQUIRED"/> <tx:method name="query*" propagation="NOT_SUPPORTED"/> <tx:method name="get*" propagation="NOT_SUPPORTED"/> <tx:method name="find*" propagation="NOT_SUPPORTED"/> <tx:method name="*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut expression="execution(* com.tiamaes.**.service.*.*(..))" id="txPointcut"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/> </aop:config> <tx:annotation-driven transaction-manager="transactionManager"/> <!-- <aop:aspectj-autoproxy /> --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:MyBatis-Configuration.xml"></property> <property name="dataSource" ref="dataSource" /> <property name="typeAliasesPackage" value="com.tiamaes.gjds.app.bean" /> </bean> <!-- scan for mappers and let them be autowired --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.tiamaes.gjds.app.persistence" /> </bean></beans>
configLocation:MyBatis配置文件
typeAliasesPackage:配置Bean目录
basePackage:配置Dao和配置文件的目录,配置文件的目录也可以单独配置
NOTE 可以在sqlSessionFactory中配置mapperLocations来指定配置文件的路径,如果不指定默认跟Dao在一个目录下
3、MyBatis配置
<?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> <settings> <!-- 使全局的映射器启用或禁用缓存。 --> <setting name="cacheEnabled" value="true" /> <!-- 全局启用或禁用延迟加载。 --> <setting name="lazyLoadingEnabled" value="true" /> <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 --> <setting name="multipleResultSetsEnabled" value="true" /> <!-- 使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动。 --> <setting name="useColumnLabel" value="true" /> <!-- 允许JDBC支持生成的键。需要适合的驱动。如果设置为true则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如Derby)。 --> <setting name="useGeneratedKeys" value="false" /> <!-- 配置默认的执行器。SIMPLE执行器没有什么特别之处。REUSE执行器重用预处理语句。BATCH执行器重用语句和批量更新 --> <setting name="defaultExecutorType" value="SIMPLE" /> <!-- 设置超时时间,它决定驱动等待一个数据库响应的时间。 --> <setting name="defaultStatementTimeout" value="25000" /> </settings></configuration>
4、使用MyBatis
package com.tiamaes.gjds.app.persistence;import java.util.List;import java.util.Map;import com.tiamaes.gjds.app.bean. GjdsSwLineInfo;import com.tiamaes.gjds.app.bean.GjdsSwStationEntrance;import com.tiamaes.gjds.app.bean.GjdsSwStationInfo;/** * <p>类描述:轨道交通的接口 </p> * <p>创建时间:2014年12月15日 上午11:20:37 </p> */public interface GjdsSwStationMapper { /** * <p>方法描述:模糊匹配地铁的线路的站点信息</p> * <p>创建时间: 2014年12月15日 下午2:14:20 </p> * <p>修改记录:</p> * @param stationName * @return * List<GjdsSwStationInfo> */ public List<GjdsSwStationInfo> queryBystationNameLike(String stationName); }
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.tiamaes.gjds.app.persistence.GjdsSwStationMapper"> <resultMap type="GjdsSwStationInfo" id="gjdsSwStationInfoMap"> <result property="stationId" column="STATION_ID" /> <result property="stationName" column="STATION_NAME" /> <result property="lng" column="LNG" /> <result property="lat" column="LAT" /> <result property="regionCode" column="REGION_CODE" /> <result property="spatial" column="SPATIAL" /> <result property="labelNo" column="LABEL_NO" /> <result property="startPassTime" column="START_PASS_TIME" /> <result property="endPassTime" column="END_PASS_TIME" /> <result property="isUpDown" column="IS_UP_DOWN" /> <result property="lineNo" column="LINE_NO" /> </resultMap> <!-- 模糊匹配站点信息 --> <select id="queryBystationNameLike" parameterType="String" resultMap="gjdsSwStationInfoMap"> SELECT STATION_ID,STATION_NAME,LNG,LAT FROM subway.GJDS_SW_STATION_INFO WHERE STATION_NAME LIKE #{stationName,jdbcType=NVARCHAR} OR STATION_PY LIKE UPPER(#{stationName,jdbcType=NVARCHAR}) </select></mapper>
namespace为接口的包名加类名
转载自:http://blog.csdn.net/jaune161/article/details/51014132