每天資訊認識MyBatis框架

菜單

認識MyBatis框架

認識MyBatis框架

一。什麼是MyBatis

MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和對映原生資訊,將介面和 Java 的 POJOs(Plain Old Java Objects,普通的 Java物件)對映成資料庫中的記錄。

上面是MyBatis官方的簡介,我們把這段話說的直白一點,什麼是MyBatis,為什麼要用MyBatis

MyBatis是讓你寫的java程式對資料庫進行增刪改查的一個工具。

java對資料庫進行增刪改查的工具很多,較之於其他工具,mybatis容易上手,而且開發起來也很簡單,同時與spring的組合也非常容易。

目前各大網際網路公司多是使用mybatis。

所以,廢話不多說,我們直接開始吧

二。測試用的資料庫和表

既然是一個對資料庫進行操作的工具,所以,我們首先準備好資料庫和表

認識MyBatis框架

認識MyBatis框架

三。建立Maven工程

給Maven小白稍微介紹以下,如果熟悉Maven的,你可以看一下2.pom.xml檔案,匯入相關包,或者直接跳過這段內容

1。Maven工程的基本結構

你可以建立一個簡單的java工程進行測試,不過這樣子的話,你需要自己去匯入相關的jar包,不過其實也不多,關鍵的就兩個,一個MySql的連線jar包,一個MyBatis的jar包,不過還是強烈建議大家直接使用Maven工程。

不過可能你還沒有接觸過Maven,無所謂,常用的開發工具IntelliJ IDEA和最新的Eclipse都預設安裝了Maven外掛,直接建立Maven工程就好了

沒使用過Maven工程也無所謂,知道下面兩點,其實我們就可以無障礙的寫程式碼了

日常使用Maven常用的功能其實就是自動幫我們匯入相關的關聯包

Maven是一個工程構建工具,簡單來說,就是我們的Java工程要按照Maven規定的模式建立,java原始檔應該放在什麼位置,配置檔案,測試檔案該放在什麼位置等等都有規定

認識MyBatis框架

上面展示的就是一個剛剛建立好的Maven工程的基本結構,接下來,我們在IntelliJ IDEA中建立一個Maven工程

認識MyBatis框架

認識MyBatis框架

認識MyBatis框架

這個樣子建立好之後,就是上面Maven專案第一個截圖的樣子了

2。修改pom。xml檔案,匯入相關包

認識MyBatis框架

認識MyBatis框架

標籤中加入相應包的Maven標籤,就能自動引入了

3。查詢相關包的dependency標籤

當然每個包相應的maven標籤是什麼也不用糾結,你可以在maven repository網站中搜索對應的包名就行了

比如你要查詢mybatis的包

認識MyBatis框架

認識MyBatis框架

搜尋出很多mybatis相關內容,我們只是使用原始的mybatis包,選擇第一個

認識MyBatis框架

選擇你需要的mybatis版本,這裡的版本劃分的很細,其實並不重要,你隨便選一個版本都可以

認識MyBatis框架

當你修改好pom。xml檔案之後,IntelliJ IDEA會在右下角提示你是否在pom。xml檔案修改後自動匯入相關包

認識MyBatis框架

我們選擇

Enable Auto-Import

就可以了

四。MyBatis配置檔案

上面主要是和maven相關的,接下來才是MyBatis最重要的內容

我們要使用MyBatis,肯定需要相關配置,現在主流的其實就兩種XML配置檔案,以及註解配置,我們先來看一下透過XML配置檔案實現的過程

下面是整個工程的結構

認識MyBatis框架

1。在resources目錄中加入mybatis-configuration。xml檔案

認識MyBatis框架

其實不用我多解釋,大家也看的出來,現在這裡主要配置的是資料庫連線的相關內容,當然現在這裡只是一個很簡單的配置,後面我們還需要做修改

注意

:mysql預設埠是3306,我這裡由於使用了Docker映射出來的埠,所以埠做出了修改,你不必和我一樣

2。定義表所對應的實體類

認識MyBatis框架

package com。yingside。bean;public class User {

private int id;

private String userTel;

private String username;

private String password;

private String registrationTime;

public int getId() {

return id; }

public void setId(int id) {

this。id = id; }

public String getUserTel() {

return userTel; }

public void setUserTel(String userTel) {

this。userTel = userTel; }

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; }

public String getRegistrationTime() {

return registrationTime; }

public void setRegistrationTime(String registrationTime) {

this。registrationTime = registrationTime; }

@Override public String toString() {

return “User{” +

“id=” + id +

“, userTel=‘” + userTel + ’\‘’ +

“, username=‘” + username + ’\‘’ +

“, password=‘” + password + ’\‘’ + “, registrationTime=‘” + registrationTime + ’\‘’ + ‘}’; }}

3。定義操作 t_user 表的sql對映檔案UserMapper。xml

認識MyBatis框架

<?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”>

<!—— 這個XML檔案其實就相當於我們三層架構中的DAO層的實現類xxxDaoImpl,如果拿它跟具有相同功能的 JDBC 程式碼進行對比,你會立即發現省掉了將近 95% 的程式碼。 也就是說,有了這個配置檔案,至少之前原始JDBC中經常出現的Connection,PreparedStatement,ResultSet這些介面不需要你再建立了 當然要編寫這個檔案,需要對標籤中出現的屬性和標籤都要熟悉,不過沒有必要去一一熟悉,用到什麼我們再去查詢就行了——>

<!—— 為這個mapper指定一個唯一的namespace,namespace的值習慣上設定成包名+sql對映檔名,這樣就能夠保證namespace的值是唯一的例如namespace=“om。yingside。mapper。UserMapper”就是com。yingside。mapper(包名)+UserMapper(UserMapper。xml檔案去除字尾) ——>

<!—— 根據 id 查詢 user 表中的資料 id:唯一識別符號,此檔案中的id值不能重複,簡單來說,就是DAO層中的方法名 resultType:返回值型別,一條資料庫記錄也就對應實體類的一個物件,注意現在要跟上全名(包名+類名) parameterType:引數型別,也就是查詢條件的型別 #{}表示一個佔位符即?,在使用時不需要關心引數值的型別,mybatis會自動進行java型別和jdbc型別的轉換。 ——>

4。在mybatis-configuration。xml配置檔案中註冊UserMapper。xml檔案

mybatis-configuration。xml檔案的標籤中加入標籤透過下面的截圖,注意的位置

認識MyBatis框架

<!—— 註冊UserMapper。xml檔案, UserMapper。xml位於com。yingside。mapper這個包下, 所以resource寫成com/yingside/mapper/UserMapper。xml——>

5。建立測試

認識MyBatis框架

package com。yingside。test;

import com。yingside。bean。User;

import org。apache。ibatis。session。SqlSession;

import org。apache。ibatis。session。SqlSessionFactory;

import org。apache。ibatis。session。SqlSessionFactoryBuilder;

import org。junit。Before;

import java。io。InputStream;

public class Test { SqlSession sqlSession = null; @Before public void init(){ //mybatis全域性配置檔案 String resource = “mybatis-configuration。xml”; //載入全域性配置檔案 InputStream is = this。getClass()。getClassLoader()。getResourceAsStream(resource); //建立SqlSession工廠 SqlSessionFactory factory = new SqlSessionFactoryBuilder()。build(is); //透過工廠生成sqlSession sqlSession = factory。openSession(); } @org。junit。Test

public void testGetUser(){ /*這個字串由 userMapper。xml 檔案中 兩個部分構成 的 namespace 的值

推薦文章