好程式設計師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
- <?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>
- <!--environments 代表配置環境集合,此標籤中可以有多個environment,
- default屬性是選擇其中一個環境作為預設的配置環境-->
- <environments default="develop">
- <environment id="develop">
- <!--這裡配置事務管理器為JDBC型別-->
- <transactionManager type="JDBC"/>
- <!--這裡配置資料來源,POOLED代表連線池型別的資料來源-->
- <dataSource type="POOLED">
- <!--這裡是常用的4個數據庫配置:驅動、URL、賬號、密碼-->
- <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql://localhost/java1903?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"/>
- <property name="username" value="root"/>
- <property name="password" value="123456"/>
- </dataSource>
- </environment>
- </environments>
- <!--這裡是配置資料庫對映檔案的路徑,如果有對映檔案就配置到這裡-->
- <mappers>
- <mapper resource="mappers/userMapper.xml"/>
- </mappers>
- </configuration>
對映檔案
MyBatis能實現通過Java物件來操作資料庫,那麼如何通過Java物件的操作來查詢和修改資料庫的表呢?MyBatis通過對映檔案來配置資料的SQL操作,將Java物件的方法對映為具體的SQL語句。
這裡我們先編寫一個UserDAO介面
- package com.qianfeng.mybatis.dao;
- public interface UserDAO
- {
- List<User> selectAll();
- void insert(User user);
- }
接下來我們來配置對映檔案實現User表的查詢和插入操作:
在resources下建立mappers目錄,然後建立對映檔案:userMapper.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <!-- namespace配置對應的Java介面 -->
- <mapper namespace="com.qianfeng.mybatis.dao.UserDAO">
- ...
- </mapper>
mapper中可以配置四種標籤:
1)<insert> 配置insert語句
2)<update> 配置update語句
3)<delete> 配置delete語句
4)<select> 配置select語句
這四種標籤的常用屬性有:
- id 對應DAO介面中的方法名
2)parameterType 對應方法的引數型別
3)returnType
對應方法的返回值型別,如:User(表的欄位名和類的屬性名一樣)
- returnMap
對應方法的返回值型別對映,用於表的欄位名和類的屬性名不一樣的情況,實現欄位名和屬性的對映關係
這裡是insert配置示例
- <insert id="insert" parameterType="com.qianfeng.mybatis.entity.User">
- insert into tb_user(u_name,u_password,u_realname,u_gender,u_age,u_img)
- values(#{name},#{password},#{realname},#{gender},#{age},#{img})
- </insert>
其中#{...}中包含的是User物件的屬性名稱
select配置示例
- <resultMap id="userMap" type="com.qianfeng.mybatis.entity.User">
- <id property="id" column="u_id"></id>
- <result property="name" column="u_name"></result>
- <result property="password" column="u_password"></result>
- <result property="realname" column="u_realname"></result>
- <result property="gender" column="u_gender"></result>
- <result property="age" column="u_age"></result>
- <result property="img" column="u_img"></result>
- </resultMap>
- <select id="selectAll" resultMap="userMap">
- select * from tb_user
- </select>
returnMap配置的查詢語句返回的物件與資料庫表的對映,id是對映名,type是對應的Java型別
其中子標籤id是配置表的主鍵,屬性id是Java類的屬性名,column是表的欄位名,還有javaType和jdbcType屬性可以配置Java的型別和Jdbc資料型別,這兩個這裡可以省略。
result是配置除主鍵外的一般列
MyBatis的使用方法
主要步驟:
- 1)讀取配置檔案,建立SqlSessionFactory
- SqlSessionFactory factory =
- new SqlSessionFactoryBuilder().build(
- Resources.getResourceAsStream("mybatis-config.xml"));
- 2)開啟資料庫會話Session
- SqlSession sqlSession = factory.openSession();
- 3)獲得DAO介面的代理物件
- UserDAO mapper = sqlSession.getMapper(UserDAO.class);
- 4)執行CRUD
- mapper.insert(...);
- 5) 提交事務
- sqlSession.commit();
- 6) 關閉會話
- sqlSession.close();
總結
本章我們學習了MyBatis的基本配置,以及對映檔案的寫法,也掌握了MyBatis的基本操作方法,MyBatis還有很多強大的特性,我們會