好程式設計師Java學習路線分享MyBatis之Spring整合

好程式設計師IT發表於2019-09-27

  好程式設計師Java 學習路線分享 MyBatis Spring 整合, Spring SpringMVC MyBatis 是目前企業開發的三大框架。本章我們將學習將 Spring MyBatis 整合到一起,成為我們專案開發的技術骨架。

引入依賴

首先我們需要在Maven 專案中新增依賴, Spring 框架和 MyBatis 框架需要的依賴有:

Ø  mybatis     MyBatis

Ø  mybatis-spring   MyBatis Spring 相容包,用於整合 MyBatis

Ø  spring-jdbc   Spring JDBC 包,配置資料來源時需要

Ø  spring-test   Spring 單元測試

Ø  spring-context   Spring 上下文,提供 IOC AOP 服務

Ø  Junit     單元測試框架

Ø  mysql-connector-java   MySQL 資料庫驅動

Ø  c3p0     連線池

新增配置檔案

首先我們用properties 檔案配置 JDBC 的引數:

示例程式碼:jdbc.properties

1.  driver=com.mysql.cj.jdbc.Driver

2.  url=jdbc:mysql://localhost/java1903?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&useSSL=false

3.  user=root

4.  password=123456

 

接下來在Spring 配置檔案中整合 MyBatis

1.  <!--1 引入屬性檔案,在配置中佔位使用 -->

2.  <context:property-placeholder location="classpath:jdbc.properties" />

3.  <!--2 配置 C3P0 資料來源 -->

4.  <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

5.  <!-- 驅動類名 -->

6.  <property name="driverClass" value="${driver}" />

7.  <!-- url -->

8.  <property name="jdbcUrl" value="${url}" />

9.  <!-- 使用者名稱 -->

10.  <property name="user" value="${user}" />

11.  <!-- 密碼 -->

12.  <property name="password" value="${password}" />

13.  <!-- 當連線池中的連線耗盡的時候 c3p0 一次同時獲取的連線數 -->

14.  <property name="acquireIncrement" value="5"></property>

15.  <!-- 初始連線池大小 -->

16.  <property name="initialPoolSize" value="10"></property>

17.  <!-- 連線池中連線最小個數 -->

18.  <property name="minPoolSize" value="5"></property>

19.  <!-- 連線池中連線最大個數 -->

20.  <property name="maxPoolSize" value="20"></property>

21.  </bean>

22.  <!--3 配置 MyBatis 會話工廠 bean -->

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

24.  <!-- 資料來源 -->

25.  <property name="dataSource" ref="datasource"/>

26.  <!-- 別名 -->

27.  <property name="typeAliasesPackage" value="com.qianfeng.mybatis.entity"/>

28.  <!-- sql 對映檔案路徑 -->

29.  <property name="mapperLocations" value="classpath:mappers/*Mapper.xml"/>

30.  </bean>

31.  <!--4 自動掃描物件關係對映 -->

32.  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

33.  <!-- 指定會話工廠,如果當前上下文中只定義了一個則該屬性可省去 -->

34.  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

35.  <!-- 指定要自動掃描介面的基礎包,實現介面 -->

36.  <property name="basePackage" value="com.qianfeng.mybatis.dao"/>

37.  </bean>

38.  <!--5 容器自動掃描 IOC 元件 -->

39.  <context:component-scan base-package="com.qianfeng.mybatis"/>

編寫Mapper 介面

以一個基本的查詢功能為例

程式碼示例:

1.  /**

2.   * 使用者 DAO 介面

3.   */

4.  public interface UserDAO {

5.        /**

6.       * 查詢所有使用者

7.       */

8.      List<User> selectAll();

9.  }

 

編寫Mapper 對映檔案

編寫Mapper 介面的對映,實現查詢功能

程式碼示例:

1.  <?xml version="1.0" encoding="UTF-8"?>

2.  <!DOCTYPE mapper

3.          PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

4.          "

5.  <!--mapper 是對映, namespace 是設定對應的 DAO 介面 -->

6.  <mapper namespace="com.qianfeng.ssm.dao.UserDAO">

7.      <!-- 配置資料庫返回結果對映 -->

8.      <resultMap id="userMap" type="User">

9.          <!--id 用於配置主鍵, property 是實體類的屬性名, column 是表中的欄位名 -->

10.          <id property="id" column="u_id"></id>

11.          <!--result 配置主鍵外其他列 -->

12.          <result property="name" column="u_name"></result>

13.          <result property="password" column="u_password"></result>

14.          <result property="realname" column="u_realname"></result>

15.          <result property="age" column="u_age"></result>

16.          <result property="gender" column="u_gender"></result>

17.          <result property="img" column="u_img"></result>

18.      </resultMap>

19.      <!-- 配置查詢語句 -->

20.      <select id="selectAll" resultMap="userMap">

21.          select * from tb_user

22.      </select>

23.    

24.  </mapper>

 

Spring 整合 JUnit 進行單元測試

使用Spring 整合 JUnit ,測試 Mapper 介面是否能用 SpringIOC 實現注入:

程式碼示例

1.  @ContextConfiguration(locations = "classpath:applicationContext.xml")

2.  @RunWith(SpringJUnit4ClassRunner.class)

3.  public class TestDAO {

4. 

5.      @Resource

6.      UserDAO userDAO;

7. 

8.      @Test

9.      public void testUserDAO(){

10.           List<User> users = userDAO.selectAll();

11.          users.forEach((user)->System.out.println(user));

12.      }

13.  }

總結

使用Spring 整合 MyBatis 後,能夠利用 Spring 強大的 IOC 機制,將 Mapper 介面的代理物件注入進來,從而避免了手動建立 SqlSessionFactory SqlSession 物件的麻煩,同時 Spring SqlSession 的訪問方式進行了最佳化,解決了 SQLSession 的執行緒安全問題。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2658528/,如需轉載,請註明出處,否則將追究法律責任。

相關文章