1. 程式人生 > >(一)mybatis 環境搭建和基本說明

(一)mybatis 環境搭建和基本說明

mybatis介紹就不多提了,直接步入正題。

先準備好eclipse和MySQL,然後先看一下目錄結構


檔案和類很少,所以mybatis的搭建是非常簡單的,如搭建中遇到問題可以先參考文件最後一部分的綜合說明。

1.下載mybatis-3.2.3.jarmysql-connector-java-5.1.12-bin.jar兩個jar包,可以到各自官網下載,也可以到我提供的下載地址下載,裡面包含了之後需要的很多jar包。地址

2.建立Dynamic Web project專案名MyBatis,把jar包複製到WEB-INF/lib資料夾下。

3.在建立好的專案中,再建立兩個Source Folder

,分別為configtest


src是原始碼檔案,config建立的都是配置檔案,test是以後專門做JUnit測試的

4.建立資料庫test(略),並建立表user,插入兩條資料。

<span style="font-size:12px;">CREATE TABLE user(
	id INT(11) NOT NULL AUTO_INCREMENT,
	name VARCHAR(30) DEFAULT NULL,
	age INT(3) DEFAULT NULL,
	birthday DATE DEFAULT null,
	PRIMARY KEY(id)
)
INSERT INTO user(name, age, birthday) VALUES('張三', 25, STR_TO_DATE('1990-05-21','%Y-%m-%d'));
INSERT INTO user(name, age, birthday) VALUES('李四', 24, STR_TO_DATE('1991-07-06','%Y-%m-%d'));
INSERT INTO user(name, age, birthday) VALUES('王五', 24, STR_TO_DATE('1991-01-02','%Y-%m-%d'));</span>

上面的插入語句,id是可以自動增長的主鍵。

5.src下建立bdt.model包,此包主要放與資料庫對應的實體類。在此包下面新建實體類User.java

<span style="font-size:12px;">public class User {
	private Integer id;
	private String name;
	private Integer age;
	private Date birth;	
// 構造方法……
	// getter和setter方法……
	// toString()方法……
}</span>

6.src下建立bdt.mapper

包,此包主要放對映的類的xml配置檔案和介面(這個以後再說),然後在此包下新建User.xml檔案,檔案內容如下:

<?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">

<mapper namespace="bdt.mapper.User">
    <select id="selectUserByID" parameterType="int" resultType="user">
        select * from user where id = #{id}
    </select>
</mapper>

7.config資料夾下建立mybatis-config.xml檔案,檔案內容如下:

<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 實體類別名,對應對映檔案中的resultType -->
	<typeAliases>
		<typeAlias alias="user" type="bdt.model.User"/>
	</typeAliases>
	
	<!-- 資料庫連線配置,配置連線字串、使用者名稱、密碼或快取、懶載入、語句執行超時時間等這裡目前只配置了基本的資料庫連線屬性 -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/test" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	
	<!-- 實體與資料庫表對映檔案位置,配置後MyBatis才會找到並載入上 -->
	<mappers>
		<mapper resource="bdt/mapper/User.xml" />
	</mappers>
</configuration>

好的,到現在基本檔案都搭建完成了,下面先進行一下測試,先看看我們的配置成果。測試之後會對以上配置做一個說明。

test資料夾下建立bdt.TestUserJunit測試類,測試程式碼如下:

public class TestUser {

	/**
	 * SqlSessionFactory是用來建立SqlSession的工廠,SqlSession會執行對映的語句,進行事物提交、回滾等。
	 * @return
	 */
	public SqlSessionFactory getSqlSessionFactory() {
		Reader reader = null;
		SqlSessionFactory sqlSessionFactory = null;
		try {
			reader = Resources.getResourceAsReader("mybatis-config.xml");
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return sqlSessionFactory;
	}
	
	@Test
	public void selectUserByID() {
		// 得到SqlSession例項,便於執行增刪改查、事務提交回滾等操作。
		SqlSession session = getSqlSessionFactory().openSession();
		try {
			User user = (User)session.selectOne("bdt.mapper.User.selectUserByID", 2);
			System.out.println(user);
		} finally {
			session.close();
		}
	}

我們選中測試方法,執行


得到結果


綜合說明:

到目前為止共有兩個xml配置檔案。mybatis-config.xml檔案時mybatis的核心配置檔案,裡面配置了實體類別名<typeAliases>、資料庫連線環境<environments>、實體類對映的xml配置檔案的載入<mappers>等。User.xml配置檔案是我們寫sql語句的檔案,與實體類一一對應,對映對應的資料庫表。下圖是對兩個配置檔案和測試程式碼關係的展示:


對應圖中編號

1. 實體類別名。在User.xml配置檔案中的resultType返回值型別是實體的時候寫此別名,不配置的話,需要寫bdt.model.User會很麻煩,這樣一配置一勞永逸。resultType還有map等返回值型別,之後再說。

2. mappers標籤配置的是需要載入哪些配置檔案,不配置系統就不知道你有此User.xml配置檔案。

3. 對映的名稱空間,目前這個可以是隨意字串,但是在以後用介面的方式的時候就不能隨便寫了,目前可以隨便寫。

4. 要執行哪個語句,必須是唯一值,開發中會有很多增刪改查語句,這個必須唯一的指定要執行哪條語句。

5. 傳入語句的條件,會有很多型別,這裡是int型別,#{id}方式可以獲得傳進來的條件引數。

6. bdt.model.User,對應實體類。

7. 另外還需要注意圖中三個綠色方框內容,<typeAliases><environments><mappers>這三個的順序是不能顛倒的,如果顛倒會報如下錯誤:

The content of element type "configuration" must match 

"(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,plugins?,environments?,databaseIdProvider?,mappers?)".

顯而易見,配置檔案中的標籤是有順序的,正確的順序錯誤提示中已經列出來了,之後我們還要新增<properties>配置檔案,自然而然必須放到<typeAliases>之前。

好的,我的mybatis已經搭建完成並測試成功了,並對基本的配置有一點了解,但是還不夠,接下來會更深入的學習。