好程式設計師Java學習路線分享MyBatis之基本使用

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

  好程式設計師Java 學習路線分享 MyBatis 之基本使用, 前言 本章我們將開始學習一個非常優秀的ORM (物件關係對映)框架: MyBatis ,它是目前企業中使用最多的資料庫框架。

 

MyBatis 簡介

        MyBatis 是一款優秀的 持久層框架,它支援定製化 SQL 、儲存過程以及高階對映。 MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。 MyBatis 可以使用簡單的 XML 或註解來配置和對映原生型別、介面和 Java POJO Plain Old Java Objects ,普通老式 Java 物件)為資料庫中的記錄。

  MyBatis 的優點有:

  1 )代替 JDBC 完成 CRUD ,效率高

  2 )上手容易,配置靈活

  3 )是目前公司主流的 ORM (物件關係對映)框架

 

MyBatis 的基本配置

  這裡我們使用Maven 構建專案,

  首先需要匯入MyBatis MySQL 驅動的依賴

  然後再新增配置檔案,MyBat is 的配置檔案分為兩種:

  1 MyBatis 框架的總體配置檔案

  2 MyBatis 資料庫對映檔案

  

MyBatis 配置檔案

  我們可以在專案的resources 目錄中新增配置檔案: mybatis-config.xml

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

2.  <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

3.  "

4.  <configuration>

5.  <!--environments 代表配置環境集合,此標籤中可以有多個 environment

6.  default 屬性是選擇其中一個環境作為預設的配置環境 -->

7.  <environments default="develop">

8.  <environment id="develop">

9.  <!-- 這裡配置事務管理器為 JDBC 型別 -->

10.  <transactionManager type="JDBC"/>

11.  <!-- 這裡配置資料來源, POOLED 代表連線池型別的資料來源 -->

12.  <dataSource type="POOLED">

13.  <!-- 這裡是常用的 4 個資料庫配置:驅動、 URL 、賬號、密碼 -->

14.  <property name="driver" value="com.mysql.cj.jdbc.Driver"/>

15.  <property name="url" value="jdbc:mysql://localhost/java1903?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"/>

16.  <property name="username" value="root"/>

17.  <property name="password" value="123456"/>

18.  </dataSource>

19.  </environment>

20.  </environments>

21.  <!-- 這裡是配置資料庫對映檔案的路徑,如果有對映檔案就配置到這裡 -->

22.  <mappers>

23.  <mapper resource="mappers/userMapper.xml"/>

24.  </mappers>

25.  </configuration>

 

 

對映檔案

  MyBatis 能實現透過 Java 物件來運算元據庫,那麼如何透過 Java 物件的操作來查詢和修改資料庫的表呢? MyBatis 透過對映檔案來配置資料的 SQL 操作,將 Java 物件的方法對映為具體的 SQL 語句。

  這裡我們先編寫一個UserDAO 介面

26.  package com.qianfeng.mybatis.dao;

27.  public interface UserDAO

28.  {

29.  List<User> selectAll();

30.  void insert(User user);

31.  }

  接下來我們來配置對映檔案實現User 表的查詢和插入操作:

  

  在resources 下建立 mappers 目錄,然後建立對映檔案: userMapper.xml

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

33.  <!DOCTYPE mapper

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

35.  "

36.  <!-- namespace 配置對應的 Java 介面 -->

37.  <mapper namespace="com.qianfeng.mybatis.dao.UserDAO">

38.  ...

39.  </mapper>

  mapper 中可以配置四種標籤:

  1 <insert> 配置 insert 語句

  2 <update> 配置 update 語句

  3 <delete> 配置 delete 語句

  4 <select> 配置 select 語句

  這四種標籤的常用屬性有:

1)   id   對應DAO 介面中的方法名

  2 parameterType    對應方法的引數型別

  3 returnType   

   對應方法的返回值型別,如:User (表的欄位名和類的屬性名一樣)

4)   returnMap       

對應方法的返回值型別對映,用於表的欄位名和類的屬性名不一樣的情況,實現欄位名和屬性的對映關係

  

  這裡是insert 配置示例

40.  <insert id="insert" parameterType="com.qianfeng.mybatis.entity.User">

41.  insert into tb_user(u_name,u_password,u_realname,u_gender,u_age,u_img)

42.  values(#{name},#{password},#{realname},#{gender},#{age},#{img})

43.  </insert>

  其中#{...} 中包含的是 User 物件的屬性名稱

 

  select 配置示例

44.  <resultMap id="userMap" type="com.qianfeng.mybatis.entity.User">

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

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

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

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

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

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

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

52.  </resultMap>

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

54.  select * from tb_user

55.  </select>

  returnMap 配置的查詢語句返回的物件與資料庫表的對映, id 是對映名, type 是對應的 Java 型別

  其中子標籤id 是配置表的主鍵,屬性 id Java 類的屬性名, column 是表的欄位名,還有 javaType jdbcType 屬性可以配置 Java 的型別和 Jdbc 資料型別,這兩個這裡可以省略。

  result 是配置除主鍵外的一般列

 

MyBatis 的使用方法

主要步驟:

56.  1 )讀取配置檔案,建立 SqlSessionFactory

57.  SqlSessionFactory factory =

58.  new SqlSessionFactoryBuilder().build(

59.  Resources.getResourceAsStream("mybatis-config.xml"));

60.  2 )開啟資料庫會話 Session

61.  SqlSession sqlSession = factory.openSession();

62.  3 )獲得 DAO 介面的代理物件

63.  UserDAO mapper = sqlSession.getMapper(UserDAO.class);

64.  4 )執行 CRUD

65.  mapper.insert(...);

66.  5) 提交事務

67.  sqlSession.commit();

68.  6) 關閉會話

69.  sqlSession.close();

總結

  本章我們學習了MyBatis的基本配置,以及對映檔案的寫法,也掌握了MyBatis的基本操作方法,MyBatis還有很多強大的特性,我們會在後面學習到。


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

相關文章