MyBatis簡介與入門


MyBatis簡介

MyBatis前身是Apache基金會的開源項目iBatis,在2010年該項目脫離Apache基金會,遷移到Google Code,並正式更名爲MyBatis。在2013年11月,MyBatis代碼遷移到GitHub

MyBatis是一個優秀的持久層框架,可以幫助開發人員屏蔽底層重複性的原生JDBC代碼。MyBatis採用配置文件或相應註解動態管理SQL語句。


爲什麼要學習MyBatis?

傳統的數據庫操作技術-JDBC

-- SQL語句嵌在Java代碼裏,耦合度高。

-- 實際開發中SQL語句變化頻繁,導致難以維護。

Hibernate框架

-- 內部對SQL語句做了較厚的封裝,難以優化。

-- 不適合大數據量、高併發、低延遲的場景。


MyBatis簡單入門

1. 建立一個Java工程


2. 導入相應的jar包和xml文件


3. 創建相關數據庫表(以Mysql爲例)


插入一條數據:


4. 創建MyBatis配置文件


配置文件內容如下:

<?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/mybatis" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
</configuration>

5. 創建數據庫表對應的實體類


實體類代碼如下:

package com.tzsj.pojo;

public class Employee {
	private Integer id;
	private String empName;
	private String gender;
	private String email;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getEmpName() {
		return empName;
	}
	public void setEmpName(String empName) {
		this.empName = empName;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	@Override
	public String toString() {
		return "Employee [id=" + id + ", empName=" + empName + ", gender=" + gender + ", email=" + email + "]";
	}

}

6. 創建數據庫表對應的映射文件


EmployeeMapper.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="com.tzsj.mybatis.EmployeeMapper">

<!-- 
	id:唯一標識
	resultType:返回值類型
	#{id}:傳遞的參數
 -->
	<select id="getEmpById" resultType="com.tzsj.pojo.Employee">
		select id, emp_name empName, gender, email from t_employee where id = #{id}
	</select>
</mapper>

7. 在MyBatis配置文件mybatis-config.xml中裝載EmployeeMapper.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/mybatis" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<!-- 裝載EmployeeMapper.xml文件 -->
	<mappers>
		<mapper resource="EmployeeMapper.xml" />
	</mappers>
</configuration>

8. 創建測試類進行測試


測試類代碼如下:

package com.tzsj.test;

import java.io.IOException;
import java.io.InputStream;
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 org.junit.Test;
import com.tzsj.pojo.Employee;

public class TestMyBatis {

	/**
	 * 	1. 根據MyBatis配置文件mybatis-config.xml獲取SqlSessionFactory工廠對象
	 * 	2. 根據sqlSession工廠對象,獲取sqlSession對象來執行增刪改查操作
	 * 		一個sqlSession就是代表和數據庫的一次會話,用完關閉
	 * 	3. 使用sql的唯一標誌(EmployeeMapper.xml中的namespace值 + 對應的SQL語句id)來告訴MyBatis執行哪個sql
	 * 
	 */
	@Test
	public void test() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session = sqlSessionFactory.openSession();
		try {
			Employee employee = session.selectOne("com.tzsj.mybatis.EmployeeMapper.getEmpById", 1);
			System.out.println(employee);
		} finally {
			session.close();
		}
	}

}

9. 進行Junit測試

測試結果如下:



如果您在操作過程中遇到什麼難題,隨時可以聯繫我並給我留言。我的微信公衆號彈指時間微信二維碼如下圖:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章