筆記50 Mybatis快速入門(一)
一、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快速入門(一)