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&characterEncoding=utf8&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.執行結果: