MyBatis基本使用步驟
MyBatis是一個數據持久層(ORM)框架。把實體 類和SQL語句之間建立了對映關係,是一種半自 動化的ORM實現。MyBATIS需要開發人員自己來寫sql語句,這可以增加了程式的靈活性,在一定程度上可以作為ORM的一種補充。
什麼情況下不適合全自動化框架:
1)系統的部分或全部資料來自現有資料庫,處於安全考慮,只對開發團隊提供幾條Select SQL(或儲存過程)以獲取所需資料,具體的表結構不予公開;
2)開發規範中要求,所有牽涉到業務邏輯部分的資料庫操作,必須在資料庫層由儲存過程實現(就金融行業而言,工商銀行、中國銀行、交通銀行,都在開發規範中嚴格指定);
3)系統資料處理量巨大,效能要求極為苛刻,這往往意味著我們必須通過經過高度優化的SQL語句(或儲存過程)才能達到系統性能設計指標。
MyBatis基本要素:
1. configuration.xml 全域性配置檔案
2. xml對映檔案(mapper)—實體類
3. SqlSession介面
使用準備工作:
1. 需要的jar包:mybatis-3.2.2.jar,mysql-connector-java-5.1.26-bin.jar;
2. 在eclipse中新增相關的dtd檔案(XML Catalog): mybatis-3-config.dtd,mybatis-3-mapper.dtd,方便建立xml配置檔案,注意dtd檔案不要放在中文目錄下;
Key:-//mybatis.org//DTD Config 3.0//EN
-//mybatis.org//DTDMapper 3.0//EN
3. 建立核心配置檔案mybatis.xml,放在src目錄下;
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd" > <configuration> <!-- 類型別名設定 --> <typeAliases> <typeAlias alias="Stu" type="com.it.entity.Stu"/> </typeAliases> <environments default="xx"> <environment id="xx"> <!-- 事務管理 --> <transactionManager type="jdbc"/> <!-- 資料庫連線池 --> <dataSource type="pooled"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mydb"/> <property name="username" value="root"/> <property name="password" value="ok"/> </dataSource> </environment> </environments> <mappers> <!-- 對應實體類的對映檔案路徑 --> <mapper resource="com/it/entity/Stu.xml"/> </mappers> </configuration>
4. 建立實體類(POJO)--Stu.java
5. 建立與之對應的對映檔案Stu.xml,與實體類在同一個目錄下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="stu">
<select id="findAll" resultType="Stu">
select * from stu
</select>
</mapper>
6. 建立測試類
public class Test {
public static void findAll() {
try {
Reader reader = Resources.getResourceAsReader("mybatis.xml");
// 工廠
SqlSessionFactory factory = new SqlSessionFactoryBuilder()
.build(reader);
// session
SqlSession session = factory.openSession();
List<Stu> ls = session.selectList("stu.findAll");
for (Stu s : ls) {
System.out.println(s.getSid() + "\t" + s.getSname() + "\t"
+ s.getSsex() + "\t" + s.getSbirth());
}
// close
session.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
findAll();
}
}