一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - MyBatis無縫對接Spring的方法

MyBatis無縫對接Spring的方法

2020-12-25 12:24落葉飛逝的戀 Java教程

Spring框架與MyBatis框架是Java互聯網技術的主流框架。那么mybatis如何無縫對接spring呢?下面通過本文給大家介紹,需要的的朋友參考下吧

1.為什么會出現MyBatis-Spring

Spring框架與MyBatis框架是Java互聯網技術的主流框架。但是如何將MyBatis無縫整合到Spring框架中呢?這時候就誕生了MyBatis-Spring。使用這個類庫中得類,Spring將會加載必要的MyBatis工廠類和session類。

Spring3.0也僅僅支持ibatis2.0。本來將MyBatis3的支持添加到Spring3.0中。而不幸,Spring3.0的開發在MyBatis3.0官方發布前就結束了。因為Spring開發團隊不想發布一個非發布版的MyBatis的整合支持。就放棄了對MyBatis的支持。

隨著Spring越來越成為java事實標準的技術框架。Spring 4.0 移除了對iBatis的直接支持。MyBatis團隊開發出來了基于Spring的MyBatis整合Jar---MyBatis-Spring。

2.使用MyBatis-Spring的好處

1.使得業務層和模型層得到更好的分離。再Spring框架中MyBatis也更加簡單,節約不少的代碼

2.甚至不需要顯示的使用SqlSessionFactory、SqlSessiond等對象

3.MyBatis-Spring組成部分

1.配置數據源

2.配置SqlSessionFactory

3.配置SqlSessionTemplate

4.配置Mapper

5.事務處理

MyBatis中要構建SqlSessionFactory對象,讓它產生SqlSession,而在MyBatis-Spring項目中SqlSession的使用是通過SqlSessionTemplate來實現的,它提供了對SqlSession操作的封裝。所以可以通過SqlSessionTemplate可以得到Mapper。

4.在Spring MVC中配置

4.1 配置SqlSessionFactoryBean

在基本的 MyBatis中,session工廠可以使用SqlSessionFactoryBuilder 來創建。而在 MyBatis-Spring 中,則使用 SqlSessionFactoryBean 來替代。

?
1
2
3
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 <property name="dataSource" ref="dataSource" />
</bean>

注意點

SqlSessionFactory 有一個單獨的必須屬性,就是 JDBC 的 DataSource

在SqlSessionFactoryBean的返回getObject的時候,有個驗證。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
 public SqlSessionFactory getObject() throws Exception {
  if (this.sqlSessionFactory == null) {
   afterPropertiesSet();
  }
 
  return this.sqlSessionFactory;
 }
 @Override
 public void afterPropertiesSet() throws Exception {
  notNull(dataSource, "Property 'dataSource' is required");
  notNull(sqlSessionFactoryBuilder, "Property 'sqlSessionFactoryBuilder' is required");
  state((configuration == null && configLocation == null) || !(configuration != null && configLocation != null),
       "Property 'configuration' and 'configLocation' can not specified with together");
  this.sqlSessionFactory = buildSqlSessionFactory();
 }

4.2配置datasource

這里我們使用的是阿里巴巴的數據庫連接池。https://github.com/alibaba/druid

?
1
2
3
4
5
6
7
8
compile group: 'com.alibaba', name: 'druid', version: '1.1.2'
<!--阿里巴巴的數據庫連接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
  <!-- 基本屬性 url、user、password -->
  <property name="url" value="${jdbc_url}"/>
  <property name="username" value="${jdbc_user}"/>
  <property name="password" value="${jdbc_password}"/>
</bean>

4.3配置數據庫鏈接屬性

在resource目錄下創建properties文件夾,并創建datasource.properties

?
1
2
3
jdbc_url=jdbc:mysql://localhost:3306/cnblogs?serverTimezone=Asia/Shanghai&characterEncoding=utf8
jdbc_user=root
jdbc_password=root

使用阿里巴巴的數據庫連接池是無需配置數據庫驅動。是根據url的前綴來判斷的

4.4配置Spring加載配置屬性及配置替換動態標簽

?
1
2
3
4
5
6
7
8
<!--加載配置文件路徑-->
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  <property name="location" value="classpath:properties/datasource.properties"></property>
</bean>
<!--獲取配置屬性之后動態替換標簽-->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
  <property name="properties" ref="configProperties"/>
</bean>

4.5配置Spring自動創建Mapper接口的bean

MyBatis-Spring提供了一個轉換器MapperScannerConfigurer,可以將映射接口轉換為Spring容器中Bean。這樣就可以在代碼中注入映射的bean

?
1
2
3
4
<!--采用自動掃描方式創建Mapper Bean-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="com.cnblogs.dao"></property>
</bean>

basePackage屬性是讓你為映射器接口文件設置基本的包路徑。 你可以使用分號或逗號作為分隔符設置多于一個的包路徑。每個映射器將會在指定的包路徑中遞歸地被搜索到。

4.6配置事務

MyBatis和Spring結合后是使用Spring AOP去管理事務的,使用Spring AOP是相當的簡單的,它分為聲明式事務和編程性事務。大部分場景下使用聲明式事務就可以了。

引入Jar包

?
1
2
3
4
5
6
7
8
compile group: 'org.springframework', name: 'spring-tx', version: '4.3.10.RELEASE'
compile group: 'org.springframework', name: 'spring-jdbc', version: '4.3.10.RELEASE'
<!--事務管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource" />
</bean>
<!--使用聲明式事務管理方式-->
<tx:annotation-driven transaction-manager="transactionManager"/>

5.完整的Spring xml配置及引用的Jar包

引入的Jar列表

?
1
2
3
4
5
6
7
8
compile group: 'org.springframework', name: 'spring-webmvc', version: '4.3.10.RELEASE'
compile group: 'org.springframework', name: 'spring-tx', version: '4.3.10.RELEASE'
compile group: 'org.springframework', name: 'spring-jdbc', version: '4.3.10.RELEASE'
compile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
compile group: 'org.mybatis', name: 'mybatis-spring', version: '1.3.1'
compile group: 'org.mybatis', name: 'mybatis', version: '3.4.5'
compile group: 'mysql', name: 'mysql-connector-java', version: '6.0.6'
compile group: 'com.alibaba', name: 'druid', version: '1.1.2'

Spring的配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?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"
    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/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
  <!--spring可以自動去掃描base-pack下面的包或者子包下面的Java文件-->
  <context:component-scan base-package="com.cnblogs.controller,com.cnblogs.service,com.cnblogs.dao"/>
  <!--自動注冊RequestMappingHandlerMapping與RequestMappingHandlerAdpter-->
  <mvc:annotation-driven/>
  <!-- 對靜態資源文件的訪問-->
  <mvc:default-servlet-handler/>
  <!--加載配置文件路徑-->
  <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="location" value="classpath:properties/datasource.properties"></property>
  </bean>
  <!--獲取配置屬性之后動態替換標簽-->
  <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
    <property name="properties" ref="configProperties"/>
  </bean>
  <!--阿里巴巴的數據庫連接池-->
  <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <!-- 基本屬性 url、user、password -->
    <property name="url" value="${jdbc_url}"/>
    <property name="username" value="${jdbc_user}"/>
    <property name="password" value="${jdbc_password}"/>
  </bean>
  <!--構建SqlSessionFactory-->
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="configLocation" value="classpath:config/mybatis-config.xml"/>
    <property name="mapperLocations" value="classpath:mappers/*.xml"/>
  </bean>
  <!--采用自動掃描方式創建Mapper Bean-->
  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.cnblogs.dao"></property>
  </bean>
  <!--事務管理器-->
  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
  </bean>
  <!--使用聲明式事務管理方式-->
  <tx:annotation-driven transaction-manager="transactionManager"/>
  <!--視圖解析器-->
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/content"></property>
    <property name="suffix" value=".jsp"></property>
  </bean>
</beans>

總結

以上所述是小編給大家介紹的MyBatis無縫對接Spring的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.jianshu.com/p/213479f25d84

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 福利视频导航大全 | 操小女人| 跪在老师脚下吃丝袜脚 | 亚拍一区| 波多野结衣被绝伦强在线观看 | 日韩经典在线观看 | 99视频有精品 | 国产偷窥 | 亚洲欧美一区二区三区在饯 | 鬼惨笑小说 | 国产精品资源在线观看 | 欧洲肥女大肥臀tv | 肉车各种play文r | 热99精品视频 | 无遮掩60分钟从头啪到尾 | 国产精品 视频一区 二区三区 | 娇妻被朋友征服中文字幕 | 亚洲乱亚洲乱妇41p国产成人 | 满溢游泳池免费土豪全集下拉版 | 公妇乱淫在线播放免费观看 | 日韩欧美亚洲每日更新网 | 国产精品久久久久久久久免费 | 朝鲜美女免费一级毛片 | adult video在线观看 | 22sihu国产精品视频影视资讯 | 男人把j放进女人的p里视频 | 免费高清在线观看 | 草草影院永久在线观看 | 99re在线精品视频免费 | 超级乱淫伦小说1女多男 | 亚洲第一区二区快射影院 | 男生的j桶女人屁免费视频 男生操男生 | 精品无码久久久久久久动漫 | 99在线在线视频免费视频观看 | 亚洲天堂视频在线播放 | 1024在线视频精品免费 | 久久青草免费91线频观看站街 | 亚洲区精品久久一区二区三区 | 太大了轻点阿受不了小说h 四色6677最新永久网站 | 东北老女人91p0rny | 1717国产精品视频免费 |