1. 程式人生 > >筆記50 Mybatis快速入門(一)

筆記50 Mybatis快速入門(一)

play ati driver 多個 目錄 自動 name 定制化 png

一、Mybatis簡介

  MyBatis 是一款優秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。

  MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始映射,將接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java對象)映射成數據庫中的記錄。

  每個MyBatis應用程序主要都是使用SqlSessionFactory實例的,一個SqlSessionFactory實例可以通過SqlSessionFactoryBuilder獲得。SqlSessionFactoryBuilder可以從一個xml配置文件或者一個預定義的配置類的實例獲得。

  用xml文件構建SqlSessionFactory實例是非常簡單的事情。推薦在這個配置中使用類路徑資源(classpath resource),但你可以使用任何Reader實例,包括用文件路徑或file://開頭的url創建的實例。MyBatis有一個實用類----Resources,它有很多方法,可以方便地從類路徑及其它位置加載資源。

二、入門

1.創建表

技術分享圖片

2.導入jar包

技術分享圖片

3.創建實體類

準備實體類Category,用於映射數據庫中的表category。

 1 package mybatis.pojo;
 2 
 3 public class Category {
 4     private int id;
 5     private String name;
 6 
 7     public int getId() {
 8         return id;
 9     }
10 
11     public void setId(int id) {
12         this.id = id;
13
} 14 15 public String getName() { 16 return name; 17 } 18 19 public void setName(String name) { 20 this.name = name; 21 } 22 23 }

4.配置文件mybatis-config.xml

  在src目錄下創建mybatis的主配置文件mybatis-config.xml (相當於hibernate.cfg.xml,如果沒有hibernate基礎請忽略本句)。
其作用主要是提供連接數據庫用的驅動,數據庫名稱,編碼方式,賬號密碼。

1 <property name="driver"   value="com.mysql.jdbc.Driver" />
2 <property name="url"      value="jdbc:mysql://localhost:3306/test2?characterEncoding=UTF-8" />
3 <property name="username" value="root" />
4 <property name="password" value="123456" />

以及別名,自動掃描mybatis.pojo下的類型,使得在後續配置文件Category.xml中使用resultType的時候,可以直接使用Category,而不必寫全mybatis.Category

1 <typeAliases>
2         <package name="mybatis.pojo" />
3 </typeAliases>

映射Category.xml

1     <mappers>
2         <mapper resource="mybatis/pojo/Category.xml" />
3     </mappers>

mybatis-config.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <typeAliases>
 7         <package name="mybatis.pojo" />
 8     </typeAliases>
 9     <environments default="development">
10         <environment id="development">
11             <transactionManager type="JDBC" />
12             <dataSource type="POOLED">
13                 <property name="driver" value="com.mysql.jdbc.Driver" />
14                 <property name="url"
15                     value="jdbc:mysql://localhost:3306/test2?characterEncoding=UTF-8" />
16                 <property name="username" value="root" />
17                 <property name="password" value="123456" />
18             </dataSource>
19         </environment>
20     </environments>
21     <mappers>
22         <mapper resource="mybatis/pojo/Category.xml" />
23     </mappers>
24 </configuration>

5.配置文件Category.xml

在包mybatis.pojo下,新建文件Category.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 
 6 <mapper namespace="mybatis.pojo">
 7     <select id="listCategory" resultType="Category">
 8         select * from category
 9     </select>
10 </mapper>

namespace="mybatis.pojo"表示命名空間是mybatis.pojo,在後續調用sql語句的時候,會用到它裏面定義了一條sql語句:select * from category。這條sql語句用id: listCategory 進行標示以供後續代碼調用。resultType="Category" 表示返回的數據和Category關聯起來,這裏本應該使用的是 mybatis.pojo.Category, 但是因為上一步配置了別名,所以直接使用Category就行了。

6.測試

<1>根據配置文件mybatis-config.xml得到sqlSessionFactory

<2>然後根據sqlSessionFactory得到session

<3>最後通過session的selectList方法,調用sql語句listCategory,listCategory這個就是在配置文件Category.xml中那條sql語句設置的id。執行完畢之後,得到一個Category集合,遍歷即可看到數據。

 1 package mybatis.test;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.util.List;
 6 
 7 import org.apache.ibatis.session.SqlSession;
 8 import org.apache.ibatis.session.SqlSessionFactory;
 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10 
11 import mybatis.pojo.Category;
12 
13 public class test {
14     public static void main(String[] args) throws IOException {
15         String resource = "mybatis-config.xml";
16         InputStream inputStream = org.apache.ibatis.io.Resources.getResourceAsStream(resource);
17         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
18         SqlSession session = sqlSessionFactory.openSession();
19         List<Category> cs = session.selectList("listCategory");
20         for (Category c : cs) {
21             System.out.println(c.getName());
22         }
23 
24     }
25 } 

三、基本原理圖

1. 應用程序找Mybatis要數據
2. Mybatis從數據庫中找來數據
  2.1 通過mybatis-config.xml 定位哪個數據庫
  2.2 通過Category.xml執行對應的select語句
  2.3 基於Category.xml把返回的數據庫記錄封裝在Category對象中
  2.4 把多個Category對象裝在一個Category集合中
3. 返回一個Category集合

技術分享圖片

筆記50 Mybatis快速入門(一)