MyBatis:快速入門實例 HelloWorld

1、簡介html

MyBatis是一個輕量級的持久層框架,它能夠幫咱們省去繁雜的JDBC操做,包括獲取數據庫鏈接、設置參數、處理結果集、事務管理等等。經過XML配置或註解,便可實現簡單的完成本來複雜的操做。
java


2、準備工做
mysql

1. 下載 jar 包,能夠在 Maven Repository (在頁面中間有個Artifact,旁邊點擊 Download JAR 便可)下載最新版本(mybatis-3.3.0)的 jar 包,而後添加到 classpath 中。git

2. 若是使用的是 Maven 建立的項目,那麼能夠簡單複製 Maven Repository 中的依賴配置便可,具體配置以下:github

<!-- Maven中pom.xml的MyBatis依賴配置 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.3.0</version>
</dependency>

3. 建立數據庫以及數據表並插入示例數據,這裏假設建立的是mybatis庫和students表,我使用的是MySql數據庫sql

-- 建立mybatis數據庫
create database mybatis
-- 切換到mybatis數據庫
use mybatis
-- 建立students表
create table students(id int auto_increment primary key, name varchar(50));
-- 插入示例數據
insert into students(name) values('kolbe');


3、MyBatis的入門實例數據庫

1. 新建MyBatis的核心配置文件(包括數據源信息、事務管理器、映射配置等),建議將該文件放置類源文件根目錄下,我直接把它取名爲mybatis.xml,具體配置以下:apache

<?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">
			<!-- 事務管理類型,JDBC表示直接使用JDBC的提交和回滾設置,依賴於數據源獲得的鏈接來管理事務 -->
			<transactionManager type="JDBC" />
			<!-- 數據庫鏈接池POOLED表示使用數據庫鏈接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
				<property name="username" value="root" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<!-- SQL代碼和映射信息配置文件 -->
		<mapper resource="cn/kolbe/mybatis/StudentMapper.xml" />
	</mappers>
</configuration>


2. 新建一個名爲Student的Java Bean類api

package cn.kolbe.mybatis;

public class Student {
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + "]";
	}
}


3. 新建SQL語句映射文件StudentMapper.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">
<!-- namespace必須是惟一的,建議用該文件所在的包路徑全類名 -->
<mapper namespace="cn.kolbe.mybatis.StudentMapper">
	<!-- select:表示這是一個查詢操做 -->
	<!-- id:用來配合namespace來定位這個操做,也就是在調用時,將採用cn.kolbe.mybatis.StudentMapper.getStudent -->
	<!-- resultType:表示返回值類型,必須是全類名,MyBatis將自動爲咱們將查詢結果封裝成Student對象 -->
	<!-- parameterType:表示傳進來的參數的類型,由於傳的是id主鍵,因此是int型 -->
	<select id="getStudent" parameterType="int" resultType="cn.kolbe.mybatis.Student">
		<!-- #{id}:表示佔位符,也就是調用時必須爲其傳一個id參數進來,注意是#不是$ -->
		select * from students where id = #{id}
	</select>
</mapper>


4. 新建一個測試類StudentDao,來測試配置的效果

package cn.kolbe.mybatis;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

public class StudentDao {

	@Test
	public void testGetStudent() throws Exception {
		// 1. 加載MyBatis的配置文件:mybatis.xml(它也加載關聯的映射文件,也就是mappers結點下的映射文件)
		InputStream in = this.getClass().getClassLoader().getResourceAsStream("mybatis.xml");
		// 2. SqlSessionFactoryBuidler實例將經過輸入流調用build方法來構建 SqlSession 工廠
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
		// 3. 經過工廠獲取 SqlSession 實例,SqlSession 徹底包含了面向數據庫執行 SQL 命令所需的全部方法。
		SqlSession session = sqlSessionFactory.openSession();
		// 4. 準備基本信息
		// 4.1) statement: 用來定位映射文件(StudentMapper.xml)中的語句(經過namespace id + select id)
		String statement = "cn.kolbe.mybatis.StudentMapper.getStudent";
		// 4.2) paramter: 傳進去的參數,也就是須要獲取students表中主鍵值爲1的記錄
		int parameter = 1;
		// 5. SqlSession 實例來直接執行已映射的 SQL 語句,selectOne表示獲取的是一條記錄
		Student student = session.selectOne(statement, parameter);
		System.out.println(student);
		// 6. 關閉輸入流和SqlSession實例
		in.close();
		session.close();
	}
}


5. 運行後能夠看到控制檯輸出,表示配置成功了

Student [id=1, name=kolbe]


6. 該項目的包結構

7. 注:

SqlSessionFactoryBuilder:能夠被建立銷燬,一旦建立了SqlSessionFactory實例,該對象就不在須要了。

SqlSessionFactory:應該是一個應用共享一個工廠實例,而不是隨意清除建立,建議在具體應用中採用單例模式來建立和獲取該實例,保證該工廠實例的惟一性。

SqlSession:不是線程安全的,多個線程共享將有可能出錯,另外用完該實例後要及時調用close()方法將其關閉。

SqlSessionFactory的建議獲取方式:

package cn.kolbe.mybatis;

import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Factory {
	private static SqlSessionFactory factory;
	static {
		factory = new SqlSessionFactoryBuilder().build(
				Factory.class.getClassLoader().getResourceAsStream("mybatis.xml"));
	}
	
	public static SqlSessionFactory getFactory() {
		return factory;
	}
}



4、實用連接:

MyBatis官方文檔http://mybatis.github.io/mybatis-3/zh/index.html 官方的入門文檔,可貴有中文版本

Maven倉庫http://mvnrepository.com/  能夠下載各類開源軟件的各類版本的jar文件以及添加Maven中的包依賴

MyBatis APIhttp://mybatis.github.io/mybatis-3/apidocs/reference/packages.html

相關文章
相關標籤/搜索