日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Java】MyBatis与Spring框架整合(一)

發布時間:2025/7/25 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java】MyBatis与Spring框架整合(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文將利用 Spring 對 MyBatis 進行整合,在對組件實現解耦的同時,還能使 MyBatis 框架的使用變得更加方便和簡單。

整合思路

作為 Bean 容器,Spring 框架提供了 IoC 機制,可以接管所有組件的創建工作并進行依賴管理,因為整合的主要工作就是把 MyBatis 框架使用中所涉及的核心組件配置到 Spring 容器中,交給 Spring 來創建和管理。

具體來說,業務邏輯對象依賴基于 MyBatis 技術實現的 DAO 對象,核心是獲取 SqlSession 實例。要獲得 SqlSession 實例,則需要依賴 SqlSessionFactory 實例。而 SqlSessionFactory 是 SqlSessionFactoryBuilder 依據 MyBatis 配置文件中的數據源、Sql映射文件等信息來構建的。

現在,我們只需把以上流程全部移交給 Spring,發揮 Spring 框架 Bean 容器的作用,就能接管組件的創建工作,管理組件的生命周期,并對組件之間的依賴關系進行解耦合管理。

準備工作

1.在項目中加入 Spring、MyBatis 及整合相關的 JAR 文件

Spring 整合 MyBatis 所需 jar 包

我已上傳到百度云網盤,大家可以點擊這里下載,密碼: xlk3?

2.建立開發目錄結構,創建實體類

3.創建數據訪問接口

4.配置 SQL 映射文件

為 IUserMapper 配置 SQL 語句映射文件 IUserMapper.xml,實現指定的查詢映射。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="cn.xxxx.mapper.IUserMapper"><select id="queryAll" resultType="USER">select * from user</select> </mapper>

5.配置 MyBatis 配置文件

編寫 MyBatis 配置文件 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"> <configuration><!-- 類型別名 --><typeAliases><package name="cn.xxxx.pojo" /></typeAliases> </configuration>

這里的 MyBatis 配置文件內容與之前相比簡單了許多,這是因為 Spring 可以接管 MyBatis 配置信息的維護工作。我們選擇把數據源配置和 SQL 映射信息轉移至 Spring 配置文件中進行管理。

實現整合

Spring 需要依次完成加載 MyBatis 配置信息、構建 SqlSessionFactory 和 SqlSession 實例,完成對業務邏輯對象的依賴注入等工作。這些工作大多以配置文件的方式實現,無須編寫相關類。

配置數據源

對于任何持久化解決方案,數據庫連接都是首先要解決的問題。在 Spring 中,數據源作為一個重要的組件可以單獨進行配置和維護。我們將 MyBatis 配置文件中有關數據源的配置移除,轉移到 Spring 配置文件中進行維護。

這里以配置 dbcp 數據源為例

<!-- 數據源 —— 數據庫連接池管理 dbcp --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/smbms"></property><property name="username" value="root"></property><property name="password" value="ok"></property></bean>

配置 SqlSessionFactoryBean

在 MyBatis 中,SqlSessionFactory 的實例需要使用 SqlSessionFactoryBuilder 創建;而在集成環境中,則可以使用 MyBatis-Spring 整合包中的 SqlSessionFactoryBean 來代替。SqlSessionFactoryBean 封裝了使用 SqlSessionFactoryBuilder 創建 SqlSessionFactory 的過程,我們可以在 Spring 中以配置文件的形式,通過配置 SqlSessionFactoryBean 獲得 SqlSessionFactory 實例。

<!-- sqlSession工廠 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <!-- 引用數據源組件 --><property name="dataSource" ref="dataSource"></property>
      <!-- 引用 MyBatis 配置文件中的配置 --><property name="configLocation" value="classpath:mybatis_config.xml"></property>
      <!-- 配置 SQL 映射文件信息 --><property name="mapperLocations" value="classpath:cn/xxxx/mapper/*.xml"></property></bean>

?通過上個示例配置的 id 為 SqlSessionFactory 的 Bean 即可獲得 SqlSessionFactory 實例。

示例中?"classpath:cn/xxxx/mapper/*.xml" 表示掃描 cn.xxxx.mapper 包及其任意層級的子包中,任意名稱的 xml 類型的文件。

使用 SqlSessionTemplate 實現數據庫的操作

對于 MyBatis 而言,得到 SqlSessionFactory 實例,就可以進一步獲取 SqlSession 實例進行數據庫操作。而在集成環境中,為了更好地使用 SqlSession,充分利用 Spring 框架提供的服務,MyBatis-Spring 整合包提供了 SqlSessionTemplate 類。

SqlSessionTemplate 類實現了 MyBatis 的 SqlSession 接口,可以替換 MyBatis 中原有的 SqlSession 實現類提供數據庫訪問操作。

配置 SqlSessionTemplate

在 IUserMapper 實現類使用注解進行注入,代碼如下

1 @Repository("userMapper") 2 public class UserMapper implements IUserMapper {3 4 @Resource(name="sqlSessionTemplate") 5 private SqlSessionTemplate template;6 7 @Override8 public List<USER> queryAll() {9 return template.getMapper(IUserMapper.class).queryAll(); 10 } 11 12 }

Spring 配置文件代碼如下:

1 <!-- 配置 SqlSessionTemplate --> 2 <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> 3 <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
4 </bean> 5 <context:component-scan base-package="cn.xxxx.*" />
6 <aop:aspectj-autoproxy />

注意:

1)創建 SqlSessionTemplate 實例時,需要通過其構造方法注入 SqlSessionFactory 實例。這里引用的是前文配置過的 id 為 SqlSessionFactory 的 Bean。

2)與 MyBatis 中默認的 SqlSession 實現不同,SqlSessionTemplate 是線程安全的,可以以單例模式配置并被多個 DAO 對象共用,而不必為每個 DAO 單獨配置一個 SqlSessionTemplate 實例。

編寫業務邏輯代碼

1 import java.util.List;2 3 import org.springframework.beans.factory.annotation.Autowired;4 import org.springframework.beans.factory.annotation.Qualifier;5 import org.springframework.stereotype.Service;6 import cn.xxxx.mapper.IUserMapper;7 import cn.xxxx.pojo.USER;8 import cn.xxxx.service.IUserService;9 10 @Service("userSerivce") 11 public class UserService implements IUserService{ 12 13 @Autowired 14 @Qualifier("userMapper") 15 private IUserMapper userMapper; 16 17 @Override 18 public List<USER> queryAll() { 19 return userMapper.queryAll(); 20 } 21 }

這里使用注解實現組件注入,測試方法省略。。。。

下次更新注入映射器實現和事務功能

總結

以上是生活随笔為你收集整理的【Java】MyBatis与Spring框架整合(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。