spring與mybatis整合配置文件詳解

一 : jar包簡單列舉 :

1, mybatis官方提供與mybatis與spring整合jar包java

2, spring相關jar包    3,mybatis相關包    4,c3p0鏈接池     5, MySQL數據庫驅動mysql

二 : mybatis配置文件

在classpath下建立mybatis-config.xmlspring

在與spring整合前, mybatis配置文件中配置 數據庫鏈接池 , 事物管理器, 映射文件 等 . 在與spring整合後其中數據庫鏈接池, 事物管理器交給spring進行管理sql

<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper .//EN" 
"http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="userMapper">
    <select id="findUserById" parameterType="int" resultType="cn.sang.model.User">
        SELECT * FROM USER WHERE id = #{id}
    </select>
</mapper>

三 : spring配置文件

在classpath下建立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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/task
           http://www.springframework.org/schema/task/spring-task-3.0.xsd">
<!-- 註解式掃描基本包實例化類    spring掃描器只掃描Service層,Controller層由springMvc負責掃描,
Dao層有Mybatis複製掃描 -->
           <context:component-scan base-package="cn.sang.service.imp"/>
           
       <!-- 讀取properties配置文件  擴展性很差的方式 -->
           <context:property-placeholder location="classpath:jdbc.properties"/>
           
       <!-- 數據庫鏈接池 -->
           <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
destroy-method="close">
            <!-- 驅動 -->
            <property name="driverClass" value="${driverClass}"/>
            <!-- url -->
            <property name="jdbcUrl" value="${jdbcUrl}"/>
            <!-- 用戶名 -->
            <property name="user" value="${user}"/>
            <!-- 密碼 -->
            <property name="password" value="${password}"/>
           </bean>
           
       <!-- 讓spring管理sqlSessionfactory 使用myBatis和spring整合包中的 ,
在定義sqlSessionFactory時指定數據源dataSource和myBatis的配置文件 -->
           <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
               <!-- 數據庫鏈接池 -->
            <property name="dataSource" ref="dataSource" />
            <!-- 加載myBatis的全局配置文件 -->
            <property name="configLocation" value="classpath:mybatis-config.xml" />
           </bean>
           
    <!-- 配置數據源事物  註解式開發 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    <!-- 開啓註解驅動 -->
        <tx:annotation-driven transaction-manager="transactionManager"/>
           
       <!-- Dao實現類開發 -->
       <!-- 爲何要在此處配置dao的實例化,由於spring掃描包實例化並無掃描dao層,須要mybatis進行掃描,
因此此處須要進行實例化的配置 -->
       <!-- 此處配置後,dao實現類被實例化,能夠在srevice能掃描到地方使用註解autowraid的方式注入使用-->
           <bean id="userDao" class="cn.sang.dao.imp.UserDaoImp">
               <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
           </bean>
           
           
</beans>

須要配置內容以下 :spring-mvc

1, 事務管理

1.1 此處使用註解式事物管理,  分爲兩步 , (1配置數據源事物 2 開啓註解驅動)mybatis

<!--配置數據源事物  註解式開發 -->

         <beanclass="org.springframework.jdbc.datasource.DataSourceTransactionManager">

              <propertyname="transactionManager"ref="dataSource"/>

         </bean>

     <!--開啓註解驅動 -->

<tx:annotation-driven/>

2,  讀取jdbc.properties文件 , 兩種方式mvc

  2.1擴展性很差的方式app

   <!--加載properties配置文件 -->ui

        <context:property-placeholderlocation="classpath:jdbc.properties"/>

  2.2 擴展性好的方式

<!-- 讀取properties文件 -->

 <beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
              <propertyname="locations">
                          <list>
                                  <value>classpath:jdbc.properties</value>
                          </list>
             </property>
</bean>

3, 數據庫鏈接池

<!-- 數據庫鏈接池 -->
           <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
destroy-method="close">
            <!-- 驅動 -->
            <property name="driverClass" value="${driverClass}"/>
            <!-- url -->
            <property name="jdbcUrl" value="${jdbcUrl}"/>
            <!-- 用戶名 -->
            <property name="user" value="${user}"/>
            <!-- 密碼 -->
            <property name="password" value="${password}"/>
           </bean>

4, 實例化sqlSessionFactory工廠

   做用 : 在未使用spring管理sqlSessionFactory以前,每次使用sqlSessionFactory都要在代碼中讀取mybatis配置文件使用sqlSessionFactoryBuilder類建立sqlSessionFactory,獲取sqlSession . 使用spring配置文件管理sqlSessionFactory的建立後就能夠省去重複建立sqlSessionFactory的代碼

<!--讓spring管理sqlSessionfactory使用myBatis和spring整合包中的 ,
在定義sqlSessionFactory時指定數據源dataSource和myBatis的配置文件 -->

         <bean id="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">

              <!-- 數據庫鏈接池 -->

              <propertyname="dataSource"ref="dataSource"/>

              <!--加載myBatis的全局配置文件 -->

              <propertyname="configLocation"value="classpath:mybatis-config.xml"/>

          </bean>

5, 使用註解式實例化Service

    注意 : spring的掃描器只掃描Service層 , Dao層由Mybatis負責掃描 , 若是Dao層是接口則不須要掃描 .Controller層由SpringMvc負責掃描 , 因此在spring配置文件的掃描器要排除掃描Controller層

       <!-- 註解式掃描基本包實例化類   spring掃描器只掃描Service,Controller層由springMvc負責掃描,Dao層有Mybatis複製掃描 -->

        <context:component-scan base-package="cn.sang.service.imp"/>

6, 使用dao實現類開發

註解式開發中, spring的掃描器只掃描service層, springmvc掃描器掃描controller層 , mybatis掃描dao層 , 若是dao實現類沒有被掃描 , 能夠在spring配置文件中經過配置bean的方式, 進行實例化 , 而後在service層能夠使用autowraid註解進行注入使用

<!-- Dao實現類開發 -->
       <!-- 爲何要在此處配置dao的實例化,由於spring掃描包實例化並無掃描dao層,
須要mybatis進行掃描,因此此處須要進行實例化的配置 -->
       <!-- 此處配置後,dao實現類被實例化,能夠在srevice能掃描到地方使用註解autowraid的方式注入使用-->
        <bean id="userDao" class="cn.sang.dao.imp.UserDaoImp">
             <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
        </bean>
相關文章
相關標籤/搜索