Mybatis 框架使用的最核心內容及mapper.xml標籤使用
關於mybatis是什麼、有什麼特點、實現機制之類的話題,網上通篇大論,這裡不再贅述,只談乾貨,希望能夠用最高的效率,最精確的和讀者找到共鳴並相互交流。
一、為什麼要使用mybaits框架?
1)效率上最優:相比hibernate而言,mybatis的體積如同九牛一毛,載入速度快,執行速度快,極大的提供和程式和資料庫之間的互動效率;
2)靈活性最強:mybatis框架的實現是基於開發者對SQL語句的使用,因此開發者可以非常靈活的對SQL語句進行編寫和修改已到達需要的結果;
3)學習性強:通過對mybaits框架的時候,開發者可以更好更多的結合資料庫進行SQL語句的編寫,在完成功能開發的同時也進一步練習和提高了對資料庫常用技術的使用,可謂一石二鳥。
二、mybatis在專案中扮演什麼角色?以什麼形式存在?mybatis的事物管理機制是怎樣的?
1)mybatis是一個ORM框架,屬於DAO層,負責和資料庫進行互動;
2)DAO層資料夾中分別存放了mapper.Java 和 mapper.xml ;
3)mapper.xml 是對 mapper.java 介面的實現。他們之間的關聯通過mapper.xml 中的<mapper ></mapper> 標籤中的namespace屬性實現繫結
-
<?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
- <mappernamespace="mapper.OrderitemMapper">
- </mapper>
4)檢驗是否繫結成功:如果按住ctrl鍵點選namespace中的值,可以直接跳轉到對應的介面,則表示跳轉成功
5)mybatis框架獨立執行時,需要手動控制事物,進行開啟、提交、回滾、關閉操作。若集成了spring框架,則可以將其託管到Spring中自動管理
- SqlSession session= MyBatisSessionFactory.getSession(); //獲取資料庫連線
- session.commit(); //提交
- session.rollback(); //回滾
- session.close(); //關閉連線
三、mybaits介面方法和介面方法的實現
1)mapper.xml 是 mapper.java 的實現,兩者通過 <statementSql></statementSql> 的 id屬性來關聯 【statementSql 泛指xml檔案中的sql執行語句片段】
mapper.java
- package mapper;
- import java.util.List;
- import pojo.CustomerAndOrder;
- publicinterface CustomerMapperOrder {
- List<CustomerAndOrder> findCusAndOrderByCid ();
- }
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
- <mappernamespace="mapper.CustomerMapperOrder">
- <!-- 此mapper.xml 是作為一對一的關係表結果的對映管理 -->
- <sqlid="cusAndOrder">
- c.*,
- o.order_id as orderId,
- o.create_date as createDate
- </sql>
- <selectid="findCusAndOrderByCid"resultType="pojo.CustomerAndOrder">
- select
- <includerefid="cusAndOrder"/>
- from
- customer c,ordertable o
- WHERE
- c.cid = o.cid
- </select>
- </mapper>
可以看到<select id = " finCusAndOrderByCid" > 中 id 的值 就是 mapper.java 中的方法名
四、介面方法和介面實現中 出入參 型別的定義
1)介面實現中可用的型別:java中的普通型別 和 自定義的pojo型別
2)定義入參的的屬性:在 parameterType = " " 屬性中定義【注意:入參是可選屬性,根據需求設定】
- <selectid="selectByPrimaryKey"resultMap="BaseResultMap"parameterType="java.lang.String">
- select
- <includerefid="Base_Column_List"/>
- from product
- where product_id = #{productId,jdbcType=VARCHAR}
- </select>
3)定義出參的屬性:出參定義的是mapper.xml中的重點。
對於增刪改語句,返回值是可選引數,如果要求有返回值,則他們的返回值預設為 int 型,這是由mybatis的底層定義的
如:mapper.xml
- <deleteid="deleteByPrimaryKey"parameterType="java.lang.String">
- delete from product
- where product_id = #{productId,jdbcType=VARCHAR}
- </delete>
- <insertid="insert"parameterType="pojo.Product">
- insert into product (product_id, product_factroy, product_store,
- product_descript)
- values (#{productId,jdbcType=VARCHAR}, #{productFactroy,jdbcType=VARCHAR}, #{productStore,jdbcType=INTEGER},
- #{productDescript,jdbcType=VARCHAR})
- </insert>
- <prename="code"class="html"><updateid="updateByPrimaryKey"parameterType="pojo.Product">
- update product
- set product_factroy = #{productFactroy,jdbcType=VARCHAR},
- product_store = #{productStore,jdbcType=INTEGER},
- product_descript = #{productDescript,jdbcType=VARCHAR}
- where product_id = #{productId,jdbcType=VARCHAR}
- </update>
mapper.java
- int deleteByPrimaryKey(String productId) throws Exception;
- int insert(Product record) throws Exception ;
- int updateByPrimaryKey(Product record) throws Exception;
而對於查詢語句<select > 而言,返回值是查詢語句得到每一條結果的對映。
查詢結果的資料型別,決定了出參的型別;查詢結果的條目數,決定了是否採用集合或者陣列。換言之:如果返回單個值,外部用單值的方式接收;如果是多個值,就需要用List<?> 來接收
mapper.java
- //通過主鍵查詢結果,只可能是一個物件,所以直接用自定義物件接收
- Product selectByPrimaryKey(String productId) throws Exception;
- //通過條件進行查詢的結果,可能是返回對個物件,因此需要用List<Product> 來接收
- List<Product> selectProByConditions(Product product);
mapper.xml 【在xml中的返回值型別為pojo.Product ,返回值的條目數決定了外部接收的單個值型別還是多個值型別】
-
<selectid="selectByPrimaryKey"resultMap="pojo.Product"parameterType
相關推薦
Mybatis 框架使用的最核心內容及mapper.xml標籤使用
關於mybatis是什麼、有什麼特點、實現機制之類的話題,網上通篇大論,這裡不再贅述,只談乾貨,希望能夠用最高的效率,最精確的和讀者找到共鳴並相互交流。 一、為什麼要使用mybaits框架? 1)效率上最優:相比hibernate而言,m
Mybatis 框架使用的最核心內容(一):Mybatis的特點和對映管理
關於mybatis是什麼、有什麼特點、實現機制之類的話題,網上通篇大論,這裡不再贅述,只談乾貨,希望能夠用最高的效率,最精確的和讀者找到共鳴並相互交流。 一、為什麼要使用mybaits框架? 1)效率上最優:相比hibernate而言,mybatis的體積如
Mybatis框架簡介、搭建及核心元素講解
大家都知道當前比較流行的框架,如Spring、SpringMVC、Hibernate、Mybatis等框架,那今天咱們來講講當前比較流行的企業框架Mybatis。 首先先來介紹一下Mybatis這個框架:Mybatis是一個開源的資料持久化層框架,它內部封裝了通過JDBC訪問資料庫的操作,支
mybatis-plus中自動配置的 mapper.xml與java介面對映問題
本來沒有mybatis-plus的話,這個工作是通過mybatis-spring的MapperScan來完成的。 Mybatis-plus中的自動配置類MybatisPlusAutoConfiguration.class中有一個靜態內部類MapperScannerRegistrarN
mybatis入門(三)之Mapper XML 檔案
Mapper XML 檔案 MyBatis 的真正強大在於它的對映語句,也是它的魔力所在。由於它的異常強大,對映器的 XML 檔案就顯得相對簡單。如果拿它跟具有相同功能的 JDBC 程式碼進行對比,你會立即發現省掉了將近 95% 的程式碼。MyBatis 就是針對 SQ
MyBatis的學習(三)——Mapper XML 檔案和parameterType的傳入引數
一、Mapper XML 檔案 Mapper對映檔案是在實際開發過程中使用最多的,也是我們學習的重點。 Mapper檔案中包含的元素有: cache – 配置給定名稱空間的快取。 cache-ref – 從其他名稱空間引用快取配置。 resultMap – 映射覆雜的結
SSM框架整合核心內容
所需要的jar包及其版本 Spring 版本:4.3.18 tx、aop、beans、core、web、web-mvc、context、expression、jdbc MyBatis:3.4.6 mybatis-spring:1.3.2 mysql-connector 連線資料庫:5
springMVC mybatis對映 springbootDEMO 掃描不到mapper.xml
ssm框架大家也都耳熟能詳了,因為突然想重溫一下mybatis和springmvc的整合, 就用idea搭了下springboot框架。 吶用idea新建專案 按步驟,勾選所需依賴 新建專案完成。 然後M V C層一一新建,來做一個簡單的對資料庫的增刪改查。
Spring-SpringMVC-Mybatis框架配置檔案內容(基礎版)
最近開始學SSM框架了,在學習搭建執行環境和配置檔案時,花了好久,有很多次都出了異常,最後終於跑通了一個簡單的登入功能.現將各種XML檔案記錄下來以便日後檢視.一.Web.XML<?xml version="1.0" encoding="UTF-8"?>
mybatis-generator 自動生成javaBean及mapper
1、搭建工程,引入jar包依賴<!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId
mybatis 自動生成實體類、mapper.xml檔案
tip: mybatis-generator不支援一對多、多對多對映,需要額外新增 在maven pom中新增 mybatis外掛 <!-- mybatis生成DAO外掛 --> <plugin> <groupId>org.mybat
MyBatis框架環境變數配置及簡單使用教程
Mybatis是持久層最優秀的一個框架,他解決了JDBC程式碼的冗餘以及引數的手工配置的難題,是一個反映對映以及結果集的一種框架模式,接下來主要闡述一下框架環境配置流程以及使用方法: (1)建立maven專案 為什麼建立該專案,主要是因為在以後開發中
【SSM-MyBatis框架】Mapper.xml配置檔案(mybatis的核心)
Mapper.xml對映檔案中定義了操作資料庫的sql,每一個sql是一個statement,對映檔案是myBatis的核心。 1.輸入對映(ParameterType) 通過parameterType指定輸入引數的型別,型別可以是簡單型別,pojo,包裝型
A query was run and no Result Maps were found for...原來是mapper.xml文件出了問題,是使用MyBatis最常見的一種錯誤
tor like .cn -1 es2017 batis pre XML apach 今天遇到一個問題,原來是mapper.xml文件出了問題,是使用MyBatis最常見的一種錯誤 報錯的結果是這樣的: A query was run and no Result Ma
MyBatis框架中Mapper映射配置的使用及原理解析(二) 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder
.cn 創建 ron 子節點 homepage 解析 調用 sco title 在 <MyBatis框架中Mapper映射配置的使用及原理解析(一) 配置與使用> 的demo中看到了SessionFactory的創建過程: SqlSessionFactory
MyBatis框架淺析之 Mapper.xml 映射文件
多個 基本類 之前 簡單 pri 處理 before lang provide Mapper XML 文件 MyBatis 的真正強大在於它的映射語句,也是它的魔力所在。由於它的異常強大,映射器的 XML 文件就顯得相對簡單。如果拿它跟具有相同功能的 JDBC 代碼進行對比
[MyBatis] Mapper.xml中的名稱空間及命名解析
Mapper.xml相關使用 名稱空間(Namespaces) 名稱空間(Namespaces) 在之前版本的MyBatis中是可選的,這樣容易引起混淆因此毫無益處。現在名稱空間則是必須的,且易於簡單地用更長的完完全限定名來隔離語句。 名稱空間使得你所見到的介面繫結成為可能,
MyBatis框架中Mapper對映配置的使用及原理
(Mapper用於對映SQL語句,可以說是MyBatis操作資料庫的核心特性之一,這裡我們討論java的MyBatis框架中Mapper對映配置的使用及原理解析,包括對mapper.xml配置檔案的讀取流程解讀) Mapper的內建方法 model層就是實體類,對應資料庫的表。controller層是Se
Spring Boot 整合Mybatis 之 Mapper外掛(自動生成XML及Mapper程式碼)
pom檔案 主要程式碼 <dependencies> <dependency> <groupId>mysql</groupId> <artifactI
mybatis框架之mapper的xml配置的編寫(單表)
在使用mybatis的時候,我們要用到mapper對映,也就是說,一個專案有持久層dao,業務層service,表現層contraller,現在加上一個mapper對映。在mapper中,介面要和xml配置檔名字一樣。 如: 在介面中,我們定義一些方法,這些方法在持久層dao中要用