MyBatis 快速入門和重點詳解(詳解)

目錄

前言:

準備工作:

開始:

1、創建項目(本博主就使用Eclipse,其他編輯器都可以,工具而已)

2、創建數據庫(mybatisdemo)及表(student)

3、創建User對象

4、在entity包下創建userMapper,xml文件,如下圖

5、創建MyBatis的配置文件

6、創建MybatisTest.java進行測試


前言:

Mybatis概念、名詞的解釋這裏就不在過多的解釋了。這篇博文主要演示,從0開始快速上手Mybatis框架。先學會使用,再去了解爲什麼這樣做,爲什麼約定大於配置(這裏後面會說到)。先把效果做出來,讓自己在有一絲的成就感下再去探究Mybatis更深層次的東西。Come on

圖解:

1、 mybatis配置

SqlMapConfig.xml,此文件作爲mybatis的全局配置文件,配置了mybatis的運行環境等信息。

mapper.xml文件即sql映射文件,文件中配置了操作數據庫的sql語句。此文件需要在SqlMapConfig.xml中加載。

2、 通過mybatis環境等配置信息構造SqlSessionFactory即會話工廠

3、 由會話工廠創建sqlSession即會話,操作數據庫需要通過sqlSession進行。

4、 mybatis底層自定義了Executor執行器接口操作數據庫,Executor接口有兩個實現,一個是基本執行器、一個是緩存執行器。

5、 Mapped Statement也是mybatis一個底層封裝對象,它包裝了mybatis配置信息及sql映射信息等。mapper.xml文件中一個sql對應一個Mapped Statement對象,sql的id即是Mapped statement的id。

6、 Mapped Statement對sql執行輸入參數進行定義,包括HashMap、基本類型、pojo,Executor通過Mapped Statement在執行sql前將輸入的java對象映射至sql中,輸入參數映射就是jdbc編程中對preparedStatement設置參數。

7、 Mapped Statement對sql執行輸出結果進行定義,包括HashMap、基本類型、pojo,Executor通過Mapped Statement在執行sql後將輸出結果映射至java對象中,輸出結果映射過程相當於jdbc編程中對結果的解析處理過程。

準備工作:

既然打算從零開始,這裏暫不打算使用Maven構建,就使用普通的java Project即可。後面spring整合時使用maven構建。

工具:Eclispe、IDEA等均可

Jar:mybatis-3.x.x.jar (mybatis類庫)、mysql-connector-java(數據庫連接)

可以在官網http://blog.mybatis.org/https://github.com/mybatis/mybatis-3/releases中下載MyBatis的資源文件mybatis-3.x.x.zip

開始:

1、創建項目(本博主就使用Eclipse,其他編輯器都可以,工具而已)

創建好普通java project(如下左圖) 。因爲是普通java項目,因此自己手動創建lib文件夾放jar包(如下右圖)。

選中兩個jar包,右鍵Build path,選擇Add to build path 會出現如下圖,即可。

2、創建數據庫(mybatisdemo)及表(student

注:複製此sql語句,如若運行不成功,有可能是網頁轉換問題,手動建表即可。

INSERT INTO `mybatisdemo`.`student`(`id`, `name`, `age`) VALUES (11, '張三', 20);
INSERT INTO `mybatisdemo`.`student`(`id`, `name`, `age`) VALUES (22, '李四', 21);
INSERT INTO `mybatisdemo`.`student`(`id`, `name`, `age`) VALUES (33, '王五', 22);

3、創建User對象

根據表中的字段來進行創建實體類。這裏需要有Get與Set方法

注:此處只是看起來更方便。開發中可以使用lombok中註解@Data即可。

package com.sss.entity;

public class User {

	private int id;
	private String name;
	private int age;
	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;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
}

4、在entity包下創建userMapper,xml文件,如下圖

<?xml version="1.0" encoding="UTF-8"?>
<!--mapper:根標籤, namespace:命名空間,隨便寫,一般保證命名空間唯一 -->
<mapper namespace="mybatis.userMapper">
	<!-- 
	     id:唯一標識,隨便寫, 在同一個命名空間下保持唯一 
	     parameterType: 入參類型
	     resultType:sql語句查詢結果集的封裝類型,
	 -->
	<select id="selectUser" parameterType="int"  resultType="com.sss.entity.User">
		select * from mybatisdemo where id = #{id}
	</select>
</mapper>

5、創建MyBatis的配置文件

注:因爲是java簡單項目,因此配置文件就先暫時放置src目錄下,spring+mybatis中會按照開發規定放置,這裏不過多計較。

自行修改數據庫用戶名、密碼及mapper路徑配置

<?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類型的事務管理器 -->
			<transactionManager type="JDBC" />
			<!-- 數據源,池類型的數據源 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
		<property name="url"
			value="jdbc:mysql://127.0.0.1:3306/mybatisdemo?useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true" />
		<property name="username" value="root" />
		<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<!-- 在配置文件(mybatis-config.xml)中註冊SQL映射文件(studentMapper.xml) -->
	<mappers>
		<mapper resource="com/sss/entity/userMapper.xml" />
	</mappers>
</configuration>

6、創建MybatisTest.java進行測試

package com.sss.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 com.sss.entity.User;

public class MybatisTest {

	public static void main(String[] args) throws IOException {
		// 指定全局配置文件
		String resource = "mybatis-config.xml";
		// 讀取配置文件
		InputStream inputStream = Resources.getResourceAsStream(resource);
		// 構建sqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 還可以傳遞第二參數,直接指定默認環境是那個
		// 獲取sqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		try {
			// 操作CRUD,第一個參數:指定statement,規則:命名空間+“.”+statementId
			// 第二個參數:指定傳入sql的參數:這裏是用戶id
			User user = sqlSession.selectOne("mybatis.userMapper.selectUser", 1);
			System.out.println("user: " + user);
		} finally {
			sqlSession.close();
		}
	}
}

圖解:

測試結果:只進行查詢測試,剩下的增刪改都一樣。

______________________________________________________________________________________________

堅持總結工作中遇到的技術問題,堅持記錄工作中所思所見。以下資料羣中均可下載

 

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