首頁>技術>

簡介

MyBatis 是一款優秀的持久層框架,它支援自定義 SQL、儲存過程以及高階對映。MyBatis免除了幾乎所有的 JDBC 程式碼以及設定引數和獲取結果集的工作。MyBatis 可以透過簡單的 XML 或註解來配置和對映原始型別、介面和 Java POJO(Plain Old Java Objects,普通老式 Java 物件)為資料庫中的記錄。

其中mybatis的下載,可以透過github獲取,地址:https://github.com/mybatis/mybatis-3

例項準備工作

為了便於理解,例項採用eclipse的普通工程加mysql作為講解。

其中資料庫用使用者作為演示的例項,在mysql資料庫中建立使用者表,其使用者結構及資料內容如下:

/*使用者表 */DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '使用者編號',  `username` varchar(20) DEFAULT NULL COMMENT '使用者名稱',  `password` varchar(20) DEFAULT NULL COMMENT '密碼',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;insert  into `user`(`id`,`username`,`password`) values (1,'demo','123456');

在eclipse中建立一個java工程。目錄結構如下:

com.example.mybatis.config:用於存放mybatis的配置檔案

com.example.mybatis.entries:用於存放對應的使用者表對應的實體類

com.example.mybatis.mappers:用於存放mytabtis對應對映檔案

test:用於存放對應的測試用例

透過github下載mybatis,把裡面的mybatis-x.x.x.jar、log4j以及對應資料庫型別的驅動放到lib目錄下作為專案環境的依賴jar。

建立及配置MyBatis的資源配置檔案

在com.example.mybatis.config建立一個名為mybatis-config.xml的檔案。檔案內容如下:

編寫配置檔案的測試用例,測試配置資訊是否正確。測試用例程式碼如下:

package com.example.mybatis.config;import static org.junit.Assert.*;import java.io.IOException;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;public class MybatisConfigTest {	@Test	public void test() throws IOException {		String resource = "com/example/mybatis/config/mybatis-config.xml";		InputStream inputStream = Resources.getResourceAsStream(resource);		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);		assertNotNull(sqlSessionFactory);	}}
建立使用者的實體類

在com.example.mybatis.entries目錄下建立使用者實體類檔案:User.java。

package com.example.mybatis.entries;/** * 使用者實體類 * @author root * */public class User {	private Long id;		private String username;		private String password;	public Long getId() {		return id;	}	public void setId(Long 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 + ", username=" + username + ", password=" + password + "]";	}}
建立針對使用者表實現的對映檔案

在com.example.mybatis.mappers目錄下建立一個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="com.example.mybatis.mappers.user">  <select id="selectById" resultType="com.example.mybatis.entries.User">    select * from user where id = #{id}  </select></mapper>

把建立的user.xml新增到mybatis配置檔案的對映器中,即加入<mappers></mappers>中。

測試用例程式碼:

package com.example.mybatis.config;import static org.junit.Assert.*;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.example.mybatis.entries.User;public class GetUserInfoByIdTest {	@Test	public void test() {		String resource = "com/example/mybatis/config/mybatis-config.xml";		SqlSession sqlSession=null;		try {			InputStream inputStream = Resources.getResourceAsStream(resource);			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);			sqlSession=sqlSessionFactory.openSession();			User user=  sqlSession.selectOne("com.example.mybatis.mappers.user.selectById", 1);			System.out.println(user.toString());			assertNotNull(user);		} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}finally {			sqlSession.close();		}	}}

測試結果:

測試用例輸出的內容

總結

透過示例我們可以發現最終查詢資料是透過SqlSession來實現的。而SqlSession是透過一個會話工廠SqlSessionFactory獲取的。所以每個基於 MyBatis 的應用都是以一個 SqlSessionFactory 的例項為核心的。SqlSessionFactory 的例項可以透過 SqlSessionFactoryBuilder 獲得。而 SqlSessionFactoryBuilder 則可以從 XML 配置檔案或一個預先配置的 Configuration 例項來構建出 SqlSessionFactory 例項。

27
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 淺析Go語言http服務handler物件底層原理