1. 程式人生 > 實用技巧 >Mybatis入門必備

Mybatis入門必備

一、Mybatis簡介

MyBatis 源於 Apache 的一個開源專案 iBatis,而 iBatis 一詞則來源於“internet”和“abatis”的組合,2010年這個專案由 Apache Software Foundation 遷移到了 Google Code,並且改名為MyBatis ,2013年11月其又遷移到 Github。MyBatis 是一個基於 Java 的支援普通 SQL 查詢,儲存過程和高階對映的優秀持久層框架,相比於基於面向物件使用 HQL 語言的 Hibernate 框架,MyBatis 則基於 SQL 面向結果集,因此其效率更高。

官方文件:https://mybatis.org/mybatis-3/zh/index.html

Mybatis就是對於JDBC的封裝!!!

二、開發步驟(僅以select * 為例)

1、導包:https://mvnrepository.com/artifact/org.mybatis/mybatis

以3.5.4版本為例,

mybatis-3.5.4.jar

mysql-connector-java-8.0.19.jar

2.編寫實體類:

a、mybatis在操作資料庫時,表的欄位名最好與pojo類的屬性名保持一致,因為mybatis預設採用的是自動對映,通過過去欄位的名字得到對應的值,然後再通過反射到類裡面尋找名字相同的屬性名,呼叫對應的setter方法將資料賦值給屬性

b、如果欄位名與屬性名不一致可以通過sql語句給查詢的欄位取別名,但是別名必須與對應的屬性名一致

public class User {
private int id;                     //id
private String account;     //賬號
private String password;  //密碼

}

3.建立mybatis-config.xml配置檔案

注意:該xml檔案應該放在src檔案下

該配置檔案用於存放資料庫連線相關資料

<?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 default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/資料庫名?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=UTC" /> <property name="username" value=使用者名稱 /> <property name="password" value=密碼 /> </dataSource> </environment> </environments> <mappers> <!--esource="存放sql語句的xml詳細地址"-->         <mapper resource="com/swpu/mapper/UsersMapper.xml"/> </mappers> </configuration>

4.建立UsersMapper.xml檔案

注意:新建mapper包,並將UsersMapper.xml放在mapper檔案下

<?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:名稱空間,作用與包名一樣   用來區分相同id的sql-->
<mapper namespace="abc">
<!-- id 為sql的唯一標識,同一個名稱空間下不能有id相同的sql(自己定義)
    resultType:將查詢出來的資料封裝成什麼型別的物件(存放src以下完整的類名)
 -->
  <select id="allUsers" resultType="com.swpu.entity.User">
    select * from mall_user
  </select>
</mapper>

5.建立測試類

public class MybatisTest {
    public static void main(String[] args) throws IOException {
        
        //自動到src下找配置檔案
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");

        //建立工廠
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);

        //建立session:底層就是利用statement物件來操作資料庫
        SqlSession session  =factory.openSession();
        
        //直接利用session來執行sql進行查詢
        List<User> selectList = session.selectList("abc.findall");
        //遍歷
        selectList.forEach(e->System.out.println(e.toString()));
//關閉statement connection
        session.close();
        
    }
}

mybatis執行邏輯

a:首先通過輸入流讀取mybatis.xml與mapper.xml檔案中的配置資訊

b:建立session,一個session就是一次會話

c:通過selectList方法中的引數找到對應的sql語句,同時建立一個statement去查詢資料庫

d:查詢時會得到一個ResultSet,mybatis框架根據反射自動的將得到的資料封裝成pojo類物件

e:如果是selectList方法,則會自動將這些物件封裝成List物件並返回

6.執行結果: