在使用mybatis-generator.xml生成接口和mapper.xml(映射器),我们要配置数据源,有三种方法:
一,可以在mybatis的全局配置文件中配置,也就是在文件中使用mybatis自己的标签,能够实现mybats的所有配置。在与spring整合时,在spring的IOC配置文件(application.xml)引入即可。引入的方式也有两种:
1),在sqlSessionFactory的属性中配置
<!-- 2. 配置sqlsession -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>
2),使用import标签(待考证,我自己根据推理感觉可以。。。哈哈)
<import resource="spring-config.xml"/>
mybatis-config.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">
<!-- MyBatis全局配置文件 -->
<configuration>
<properties resource="database.properties"></properties>
<!-- 设置lo4j日志文件 -->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!-- 可配置多套运行环境,如开发环境、测试环境、生产环境等 -->
<!-- development 开发者模式 -->
<environments default="development">
<environment id="development">
<!-- 事务管理器 JDBC|MANAGED JDBC:直接使用JDBC的提交和回滚功能 -->
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${userName}"/>
<property name="password" value="${pwd}"/>
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="mapper/EmpMapper.xml"/>
<!-- <mapper url="file:///E:/EmpMapper.xml"/> -->
</mappers>
</configuration>
二,目前spring支持的mybatis的所有配置,可直接在application.xml中完成mybatis的所有配置。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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.xsd">
<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?3useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8"/>
<property name="user" value="root"/>
<property name="password" value="123456"/>
<property name="minPoolSize" value="10"/>
<property name="maxPoolSize" value="100"/>
<property name="acquireIncrement" value="3"/>
<property name="acquireRetryAttempts" value="60"/>
<property name="acquireRetryDelay" value="1000"/>
<property name="autoCommitOnClose" value="false"/>
<property name="checkoutTimeout" value="0"/>
<property name="idleConnectionTestPeriod" value="120"/>
<property name="maxIdleTime" value="60"/>
<property name="testConnectionOnCheckin" value="false"/>
<property name="maxStatements" value="8"/>
<property name="maxStatementsPerConnection" value="5"/>
<property name="unreturnedConnectionTimeout" value="25"/>
</bean>
<!-- mybatis文件配置,配置SqlSessionFactoryBean类,扫描所有mapper文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 指定数据源 -->
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:mapping/*Mapper.xml"/>
</bean>
<!-- spring与mybatis整合配置,org.mybatis.spring.mapper.MapperScannerConfigurer类,扫描所有dao-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="dao"/>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 使用spring的方式配置typeHandler-->
<bean id="listStringTypeHandler" class="common.ListTypeHandler"/>
</beans>
三,为了让spring的IOC配置文件不那么臃肿,可以单独写个spring-mybatis.xml文件来表示spring对mybatis进行整合。在application.xml中我们引入spring-mybatis.xml即可。其中spring-mybatis.xml的配置可以完全参考方法二中的文件。
application.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置component所在的包,自动加载需要管理的Bean -->
<context:component-scan base-package="controller,service,dao"/>
<!-- 引入spring-mybatis.xml文件 -->
<import resource="spring-mybatis.xml"/>
</beans>
总结:
web.xml 里配置 spring的IOC文件(applicationg.xml) 路径,然后 spring 里包含各个子配置文件,名字随便吧,只是为了清晰。因为spring-mvc是spring的模块,自动集成,可以在web.xml中直接配置spring-mvc的配置文件。