天天看點

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

  好程式員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驅動的依賴

  然後再添加配置檔案,MyBatis的配置檔案分為兩種:

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. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  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接口

  1. package com.qianfeng.mybatis.dao;
  2. public interface UserDAO
  3. {
  4. List<User> selectAll();
  5. void insert(User user);
  6. }

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

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

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <!-- namespace配置對應的Java接口 -->
  6. <mapper namespace="com.qianfeng.mybatis.dao.UserDAO">
  7. ...
  8. </mapper>

mapper中可以配置四種标簽:

1)<insert> 配置insert語句

2)<update> 配置update語句

3)<delete> 配置delete語句

4)<select> 配置select語句

  這四種标簽的常用屬性有:

  1. id  對應DAO接口中的方法名

2)parameterType   對應方法的參數類型

3)returnType   

對應方法的傳回值類型,如:User(表的字段名和類的屬性名一樣)

  1. returnMap       

對應方法的傳回值類型映射,用于表的字段名和類的屬性名不一樣的情況,實作字段名和屬性的映射關系

  這裡是insert配置示例

  1. <insert id="insert" parameterType="com.qianfeng.mybatis.entity.User">
  2. insert into tb_user(u_name,u_password,u_realname,u_gender,u_age,u_img)
  3. values(#{name},#{password},#{realname},#{gender},#{age},#{img})
  4. </insert>

  其中#{...}中包含的是User對象的屬性名稱

select配置示例

  1. <resultMap id="userMap" type="com.qianfeng.mybatis.entity.User">
  2. <id property="id" column="u_id"></id>
  3. <result property="name" column="u_name"></result>
  4. <result property="password" column="u_password"></result>
  5. <result property="realname" column="u_realname"></result>
  6. <result property="gender" column="u_gender"></result>
  7. <result property="age" column="u_age"></result>
  8. <result property="img" column="u_img"></result>
  9. </resultMap>
  10. <select id="selectAll" resultMap="userMap">
  11. select * from tb_user
  12. </select>

returnMap配置的查詢語句傳回的對象與資料庫表的映射,id是映射名,type是對應的Java類型

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

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

MyBatis的使用方法

主要步驟:

  1. 1)讀取配置檔案,建立SqlSessionFactory
  2. SqlSessionFactory factory =
  3. new SqlSessionFactoryBuilder().build(
  4. Resources.getResourceAsStream("mybatis-config.xml"));
  5. 2)打開資料庫會話Session
  6. SqlSession sqlSession = factory.openSession();
  7. 3)獲得DAO接口的代理對象
  8. UserDAO mapper = sqlSession.getMapper(UserDAO.class);
  9. 4)執行CRUD
  10. mapper.insert(...);
  11. 5) 送出事務
  12. sqlSession.commit();
  13. 6) 關閉會話
  14. sqlSession.close();

總結

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