1. 程式人生 > >mybatis系統學習(二)——使用基礎mybatis代替原始jdbc

mybatis系統學習(二)——使用基礎mybatis代替原始jdbc

前言

這一篇筆記的內容應當是建立在上一篇的基礎之上,不論是使用的資料表,還是對應的實體類,都在上一篇有過說明。
有興趣的或者對相應內容有疑問的,可移步:
https://blog.csdn.net/tuzongxun/article/details/80097321
我在學習過程中,歷來遵循的原則就是先知其然,然後再根據情況看是否要知其所以然。
那麼如今,在mybatis的知其然這一塊我還沒搞定的情況下,自然也是要先從這裡下手。
那麼,首先要做的,就是怎樣使用最精簡的mybatis代替最精簡的jdbc。
在我看來,只有這種不和其他任何東西交叉的內容,才能使理解更加高效和透徹,才能更好的理解這項技術本身。從而,使其在和其他內容整合時,繞過更多的坑。

mybatis依賴包

在上一篇其實已經說過,使用mybatis並不是就不用jdbc了,實際上不論使用哪個持久層框架,底層都還是要經過jdbc。使用java和資料庫打交道(起碼關係型資料庫),jdbc是必不可少的,區別只在與需不需要自己手動實現。
因此,在我以mysql為資料庫做例子時,即便是使用mybatis,依然需要依賴mysql的java驅動包。除此之外,就是還需要mybatis相應的jar包,那麼使用maven的依賴配置就是如下這樣:

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
</dependency>
<dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.3.0</version>
</dependency>

mybatis資料來源配置mybatis.xml

既然說jdbc原始實現交給mybatis管理了,那麼很明顯的,jdbc必須的源資料,例如驅動、資料庫url、使用者名稱、密碼,這些我們就必須以某種方式告訴mybatis。
而在單純的使用mybatis時,常用的方式就是使用mybatis的配置檔案指定這些源資料,也稱為資料來源。
這個配置檔案需要遵循一定的格式,那麼一個僅包含了jdbc資料來源的配置應該如下所示:

<?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">
      <!-- 配置資料來源 -->
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/test"/>
        <property name="username" value="tuzongxun"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>
</configuration>

有了上邊的配置,看起來好像就夠了,但是實際執行會發現將會丟擲異常,並提示“”environment” 的內容不完整,它必須匹配 “(transactionManager,dataSource)”,因此除了dataSource,還需要配置transactionManager,改動之後如下:

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

持久層介面

有了上邊的配置,當正確呼叫mybatis的時候,就能夠正常連線到mysql,但是卻還無法進行具體的資料庫操作。
以之前那個jdbc的例子來說,查詢user表所有的資料,然後對映到每個user物件中,那麼我們這裡需要先頂一個持久層的介面類:

public interface UserMapper {
    public List findUsers();
}

介面實現userMapper.XML

介面定義了做什麼,具體怎麼做就需要相應的實現。從官網來看,也可以選擇使用java實現類,但是以我目前看到的情況來說,基本都是使用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="study.tuzongxun.mapper.UserMapper">
  <select id="findUsers" resultType="study.tuzongxun.model.UserModel">
       select * from user
  </select>
</mapper>

上邊的配置主要包含兩個內容,一個是檔案頭。如果仔細看的話,會發現這個檔案頭和上邊那個資料來源配置的檔案頭幾乎一樣,不同的就是把資料來源那裡檔案頭中的所有configuration換成mapper,同時注意其中部分位置大小寫,這些是固定寫法。
第二部分,就是針對介面方法的具體實現。mapper標籤對應一個介面類,裡邊的namespace屬性值就是介面類的路徑。
在mapper裡邊定義一個子標籤select,對應sql的select查詢語句,id屬性對應介面方法方法名,resultType指定返回值型別,比如這裡就是直接對應userModel類,使得查詢結果能直接對映到userModel類的物件中。

資料來源和實現關聯

有了上邊的配置,就把相應的介面類以及介面方法和具體的sql實現聯絡了起來。
但是如果要在java程式碼中使用這個介面做事,就還需要使上述配置和具體的資料來源聯絡起來,所以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/test"/>
        <property name="username" value="tuzongxun"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>
  <!-- 配置用以實現持久層介面的實現xml -->
  <mappers>
    <mapper resource="study/tuzongxun/mapper/userMapper.xml"/>
  </mappers>
</configuration>

也就是在之前的基礎上,指定對持久層介面實現的xml檔案。這樣一樣,就真這個的把整個資料來源和邏輯實現都結合在了一起。
而上邊mapper標籤加resource屬性關聯的方式,使用的是檔案相對路徑的方式,實際上還可以使用下邊任意一種方式替代:

<!--檔案絕對路徑-->
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
<!--指定實現類,直接使用java實現類的方式-->
<mapper class="org.mybatis.builder.AuthorMapper"/>
<!--指定檔案所在的包路徑(名稱空間)-->
<package name="org.mybatis.builder"/>

執行

上邊的配置是否正確,就需要用執行來給出答案,這就需要說到mybatis的執行主要步驟,就例如使用原始jdbc有jdbc五步一樣。還是先給例子:

public static void main(String[] args) {
try {
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sessionFactory.openSession(true);
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List list = userMapper.findUsers();
for (UserModel user : list) {
System.out.println(user);
}
} catch (IOException e) {
e.printStackTrace();
}
}

上邊的例子解釋如下:
使用io流載入mybatis配置檔案;
使用SqlSessionFactoryBuilder建立一個SqlSessionFactory ,引數就是讀取了mybatis引數的流
然後使用SqlSessionFactory 建立SqlSession,設定為自動提交;
再從SqlSession中獲取需要的mapper介面;
執行具體的介面方法。

那麼,從上邊可以看到,呼叫mybatis實際最重要的就是兩步:
建立SqlSessionFactory ;
建立sqlSession 。

建立SqlSessionFactory的時候需要載入mybatis配置檔案,建立sqlSession就可以獲取需要使用的被mybatis管理的介面。

以上便是最簡單的mybatis使用,沒有spring和其他東西,其他後續所有一切,都將是在此基礎上進一步演進。

相關推薦

mybatis系統學習——使用基礎mybatis代替原始jdbc

前言 這一篇筆記的內容應當是建立在上一篇的基礎之上,不論是使用的資料表,還是對應的實體類,都在上一篇有過說明。 有興趣的或者對相應內容有疑問的,可移步: https://blog.csdn.net/tuzongxun/article/details/800

mybatis系統學習——jdbc基礎mybatis

說明 這一次我所想要做的事,是系統的學習一下mybatis,結合官網文件以及各種網路資料和以往實踐經驗。 既然是系統的學,就免不了需要了解他所要解決的事情。 據我目前的理解,作為一個持久層框架,mybatis歸根結底解決的問題其實就是jdbc那幾句話的問題

MyBatis學習——MyBatis事務核心物件及配置

一、獲取SqlSession物件 MyBatis框架中涉及到的幾個API SqlSessionFactoryBuilder:該物件負責根據MyBatis配置檔案mybatis-config.xml構建SqlSessionFactory例項  負責生產session SqlSes

Spring Boot學習mybatis + druid + 多資料來源自動切換

一、簡介 閒言碎語不多說:專案中要用到多資料來源分別管理資料,主資料來源儲存正式資料,從資料來源儲存預載入的資料並完成預校驗。 二、環境準備 eclipse + maven + Spring Boot + mybatis + oracle 三、程式碼改造 pom

mybatis系統學習——mybatis原始碼之內部基本處理流程

mybatis使用中的模組互動 在之前的學習中我們知道了,一個簡單的基礎mybatis專案基本會包含如下幾個必要的部分: 從上圖中可以清晰的看到,整個資料的走向最終是指向了業務類,也就是說無論是配置還是介面,還是依賴包,最終的作用都是為了業務,為了解決實

ext2文件系統學習—— 目錄磁盤結構

echo free 文件格式 htm file 目錄結構 bitmap 點號 name 創建鏡像、mount等操作和上一篇一樣,測試目錄結構如下: 一些文件系統信息如下: Block size: 1024 Inodes per group: 1

Linux文件系統學習之重要數據結構1

class targe html evel 系統結構 會有 集合 spec lan 轉載自:https://blog.csdn.net/wudongxu/article/details/6436894 《Linux內核設計與實現》 http://www.ibm.com/

MariaDb資料庫管理系統學習使用HeidiSQL資料庫圖形化介面管理工具

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java 學習—— 基礎語法

Java 基礎語法 一個Java程式可以認為是一系列物件的集合,而這些物件通過呼叫彼此的方法來協同工作。下面簡要介紹下類、物件、方法和例項變數的概念。 物件:物件是類的一個例項,有狀態和行為。例如,一條狗是一個物件,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。 類:類是

MariaDb數據庫管理系統學習使用HeidiSQL數據庫圖形化界面管理工具

標簽 自動 記錄 輸入 連接 管理系 ans nts follow HeidiSQL 是一款用於簡單化的 MySQL 服務器和數據庫管理的圖形化界面。該軟件允許你瀏覽你的數據庫,管理表,瀏覽和編輯記錄,管理用戶權限等等。此外,你可以從文本文件導入數據,運行 SQL查詢,

mybatis入門篇Mybatis註解方式的基本用法

batis case left 返回 import Coding print pack hid @Select 1、mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCT

MyBatis學習

face select 記錄 lose stack .class ktr where sets 視頻觀看地址:http://edu.51cto.com/course/14674.html 1、基於傳統dao模式下的數據操作 1.1、定義數據操作接口 package cn.o

mybatis基礎系列——基礎語法、別名、輸入對映、輸出對映

增刪改查 <mapper>根節點及其子節點 mybatis框架需要讀取對映檔案建立會話工廠,對映檔案是以<mapper>作為根節點,在根節點中支援9個元素,分別為insert、update、delete、select(增刪改查);cache、cache-ref、resultMap、

MyBatis學習--基本CRUD操作例項

寫在前面 這篇依然是參考寫的,一些基本的例項。下一篇打算自己總結,慢慢的摸索著寫了。 孤傲蒼狼的部落格:https://www.cnblogs.com/xdp-gacl/category/655890.html 程式碼中會有很多重要的註釋,請不要忽略。 使用MyBatis進

Java開發學習心得Mybatis和Url路由

rac 處理 2.4 報錯 localhost insert 實體 tips control Java開發學習心得(二):Mybatis和Url路由 序號接上一篇Java開發學習心得(一):SSM環境搭建 1.3 Mybatis MyBatis 本是apache的一個開源項

Mybatis學習Mybatis框架的原理

, 2010年這個專案由apache software foundation 遷移到了google code,並且改名為MyBatis 。2013年11月遷移到Github。iBATIS一詞來源於“internet”和“abatis”的組合,是一個基於Java的持久層框架。iBATIS提供的持久層框架包括S

MyBatis學習總結---優化MyBatis配置檔案中的配置

  藉助properties來優化MyBatis配置檔案中的配置    之前我們是直接把資料庫的連線配置資訊直接放在MyBatis的xml配置檔案中的,如: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE

MyBatis學習筆記優化MyBatis配置,解耦合,提高複用性

我們接著上篇的環境,優化MyBatis配置 1.連線資料庫的配置放在properties檔案中 在src下建立db.properties檔案,寫連線資料庫需要使用到的資料庫驅動,連線URL地址,使用者名稱,密碼;內容如下 driver=com.mysq

MyBatis學習筆記——優化MyBatis配置檔案

在使用MyBatis的時候,MyBatis的配置檔案可以說是相當重要的了。那麼,我們先來看看MyBatis配置檔案中的內容和順序: <properties>(屬性) <setting>(全域性配置引數) <typeAliases>(類

Mybatis學習Mybatis配置檔案

Mybatis配置檔案影響著Mybatis的行為。 配置檔案有兩種 第 1種基於xml配置檔案 下面來具體分析一個xml配置檔案. <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE c