在具體做這個實戰教程前,首先要對mybatis有個基礎的認識。

什麼是mybatis ?

  MyBatis是支援普通SQL查詢,儲存過程和高階對映的優秀持久層框架。MyBatis消除了幾乎所有的JDBC程式碼和引數的手工設定以及結果集的檢索。MyBatis跟hibernate相同,都是通過ORM(物件關係對映)使用簡單的XML或註解用於配置和原始對映,將介面和Java的POJOs(Plan Old Java Objects,普通的Java物件)對映成資料庫中的記錄。比hibernate靈活。效能也比hibernate好。

開發環境的搭建

  我搭建的環境,選擇:myeclipse8.5,mysql5.0,jdk1.7,mybatis-3.1.1.jar,tomcat6.0,navicat for Mysql。這些軟體工具均可以到各自的官方網站上下載。

第一步,建立一個名字為MybatisTest的Web Porject專案。

第二步,新增mybatis-3.1.1.jar和mysql-connector-java-5.1.7.jar到MyBatiTest\WebRoot\WEB-INF\lib目錄下面。

    

第三步,在src下建立一個configuration.xml檔案。

configuration.xml檔案中裡面填寫連線資料庫的配置

<?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.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/test"/>
            <property name="username" value="root"/>
            <property name="password" value="gaoli123"/>
        </dataSource>
    </environment>
</environments>
</configuration>

第四步,測試連線資料庫

1)在src下建立一個util包,在其下面再建立一個MyBatisUtil.java的檔案

2)編寫測試能否載入配置檔案,並例項化的對像的程式碼

package util;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
 * 資料庫配置類
 * @author gaoli
 * @date 2015-01-08
 */
public class MyBatisUtil {
    private static SqlSessionFactory ssf;
    static {
        try {
            //載入配置檔案configuration.xml
            Reader reader = Resources.getResourceAsReader("configuration.xml");
            //例項化SqlSessionFactory物件
            ssf = new SqlSessionFactoryBuilder().build(reader);
            System.out.println(ssf);
        } catch (IOException e) {
            System.out.println("找不到該檔案,檔案載入失敗!");
        }
    }
    public static void main(String[] args) {
        SqlSession session= ssf.openSession();
        System.out.println(session != null);
        
    }
}
3)執行該類,執行結果為:
<pre name="code" class="html">[email protected]5d1
true
這說明已經例項化sqlSessionFactory物件,並且能獲取到sqlSession
4)使用Navicat新增user表,並向表中新增一條記錄

5)在專案的src下新增entity包,並在其中建立User.java實體類(與表結構相同)

package entity;
/**
 * 實體類User,與資料庫對應
 * @author gaoli
 * @date 2015-01-08
 */
public class User {
	private int id;
	private String username;
	private String password;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", password=" + password + ", username="
				+ username + "]";
	}
}	
6)在同目錄下,新增UserMapper.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="dao.UserMapper">
    <select id="getById" parameterType="int" resultType="User">
        select * from user where id = #{id}
    </select>
</mapper>
7)修改configuration.xml配置檔案
<?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>
	<typeAliases>
		<typeAlias type="entity.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="gaoli123"/>
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="dao/UserMapper.xml" />	
				
	</mappers>
</configuration>

8)修改MyBatisUtil.java檔案程式碼,在main方法中新增程式碼:

package util;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import entity.User;
/**
 * 資料庫配置類
 * @author gaoli
 * @date 2015-01-08
 */
public class MyBatisUtil {
	private static SqlSessionFactory ssf;
	static {
		try {
			//載入配置檔案configuration.xml
			Reader reader = Resources.getResourceAsReader("configuration.xml");
			//例項化SqlSessionFactory物件
			ssf = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			System.out.println("找不到該檔案,檔案載入失敗!");
		}
	}
	public static void main(String[] args) {
		SqlSession session= ssf.openSession();
		try{
			User user =(User)session.selectOne("dao.UserMapper.getById",1);
			System.out.println("user:"+user.getUsername());
			System.out.println("pass:"+user.getPassword());
		}finally{
			//session開啟後,執行完資料庫操作,必須關閉。
			session.close();
		}
	}
}
9)測試資料庫的連線,看看是否有正確的返回值:
user:Lina
pass:123123

現在執行這個程式,是不是得到查詢結果了。恭喜你,環境搭建配置成功,接下來第二章,將講述基於介面的操作方式,增刪改查。
整個工程目錄結構如下:


.