上一節測試好了Mybatis3,接下來整合Spring4!
1、添加spring上下文配置
在src/main/resources/目錄下的spring新建spring上下文配置文件applicationContext-dao.xml :
注:
applicationContext-dao.xml, 用於管理數據庫,
applicationContext-service.xml 用於配置service,
applicationContext-mvc.xml 用於集成springmvc配置文件,以此類推
添加內容以下:
<?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"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://directwebremoting.org/schema/spring-dwr/spring-dwr-3.0.xsd ">
<!--註解掃描器 -->
<context:annotation-config />
<context:component-scan base-package="com.ssm.demo2.controller">
</context:component-scan>
<!-- 配置dataSource 使用dbcp鏈接池 註釋 -->
<!--
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis? characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
-->
<!-- 加載數據源配置 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 配置dataSource 使用dbcp鏈接池-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClass}" />
<property name="url" value="${jdbc.jdbcUrl}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
<!-- 設置數據庫鏈接池的最大鏈接數 -->
<property name="maxActive" value="${jdbc.maxPoolSize}" />
<!-- 設置數據庫鏈接池的初始化鏈接數 -->
<property name="initialSize" value="${jdbc.initPoolSize}"/>
</bean>
<bean
id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--dataSource屬性指定要用到的鏈接池 -->
<property name="dataSource" ref="dataSource" />
<!--configLocation屬性指定mybatis的核心配置文件 -->
<property
name="configLocation" value="mybatis/mybatis_config.xml" />
</bean>
<!--註冊UserMapper映射 -->
<bean
id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<!--sqlSessionFactory屬性指定要用到的SqlSessionFactory實例 -->
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<!--mapperInterface屬性指定映射器接口,用於實現此接口並生成映射器對象 -->
<property name="mapperInterface" value="com.ssm.demo2.mapper.UserMapper"/>
</bean>
</beans>
2、測試
把mybatis_config.xml配置中有關數據庫的配置信息註釋掉!
在src/test/main 目錄下新建Mybatis_Spring_Test.java進行測試:
public class Mybatis_Spring_Test {
private ApplicationContext ctx;
@Before
public void setUp() throws Exception {
String configpath="spring/applicationContext-dao.xml";
ctx=new ClassPathXmlApplicationContext(configpath);
}
@Test
public void test() throws Exception {
//測試是否能正常加載配置文件
System.out.println(ctx);
UserMapper userMapper=ctx.getBean(UserMapper.class);
List<User> users=userMapper.findUserList("王");
System.out.println(users.size());
}
}
結果:
測試ok!
3、把註冊mapper的方式 改成自動掃描方式
在applicationContext-dao.xml註冊mapper是手動配置的,在項目中這樣的配置會不少,很不方便,改爲自動掃描式!
註釋掉如下配置:
<!--
<bean
id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<!--sqlSessionFactory屬性指定要用到的SqlSessionFactory實例 -->
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<!--mapperInterface屬性指定映射器接口,用於實現此接口並生成映射器對象 -->
<property name="mapperInterface" value="com.ssm.demo2.mapper.UserMapper"/>
</bean>
-->
添加以下配置:
<!-- mybatis自動掃描包下的mapper -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage"value="com.ssm.demo2.mapper"/>
<!-- optional unless there are multiple session factories defined -->
<property name="sqlSessionFactoryBeanName"value="sqlSessionFactory"/>
</bean>
最後添加事務管理
<!--
數據庫的事務管理器配置 -->
<
bean
id
=
"transactionManager"
class
=
"org.springframework.jdbc.datasource.DataSourceTransactionManager"
>
<
property
name
=
"dataSource"
ref
=
"dataSource"
/>
</
bean
>
<!--
使用annotation定義數據庫事務,這樣能夠在類或方法中直接使用@Transactional註解來聲明事務 -->
<
tx:annotation-driven
transaction-manager
=
"transactionManager"
/>
現測試經過OK
注:在src/main/resource中mybatis目錄下的UserMapper.xml在前一節中改爲自動掃描式後,能夠去掉,一樣在配置自動掃描加載mapper後,mybatis_config.xml中的功能也所有由spring進行了管理,也是能夠去掉滴!!但了爲結構清晰,保留這二個配置文件!
Mybatis3與Spring4整合成功!Spring4請查看相關詳細文章!
最後一節整合SpringMVC!