標籤:

MyBatis簡介與入門

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測試

測試結果如下:

原文地址blog.csdn.net/plxddyxnm


推薦閱讀:

我的產品開發之旅 - SSM框架升級API平台(Spring + SpringMVC + MyBatis)
mybatis中批量插入的兩種方式(高效插入)
MyBatis中insert返回主鍵(ID)
MyBatis 動態 SQL 常用功能

TAG:MyBatis |