1. 程式人生 > >MyBatis基本使用步驟

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();
	}

}