1. 程式人生 > >【Mybatis】對映檔案

【Mybatis】對映檔案

        Mybatis的對映檔案中定義了操作資料庫的sql,每個sql是一個Statement,因此mybatis涉及到了專案的核心,畢竟所有的sql語句都是寫在這裡的。如果說配置檔案是在告訴mybatis操作哪個資料庫,那麼對映檔案就是在告訴mybatis該怎麼樣操作資料庫。所以關於對映檔案的總結要多寫幾篇文章。

1. 兩個佔位符

       #{}實現的是向prepareStatement中的預處理語句中設定引數值,sql語句中#{}表示一個佔位符即?。使用#{}可以防止sql注入,mybatis會自動進行java型別和jdbc型別的轉換。#{}可以接收簡單型別值或pojo屬性值。

${}可以將parameterType 傳入的內容拼接在sql中。它不會進行型別轉換。

       簡單來說就是使用#{}傳入字串會mybatis會為我們自動加入’’,但是${}會直接進行拼接。

      下面看一個例子。

<!-- 根據名稱模糊查詢使用者資訊--使用${} -->
     <select id="selectUserByName" parameterType="string" resultType="user">
        select * from user where username like '%${value}%'
     </select>
	 
 <!-- 根據名稱模糊查詢使用者資訊--使用#{},在傳入引數的時候就必須加 %% 來實現模糊查詢-->
     <select id="selectUserByName" parameterType="string" resultType="user">
        select * from user where username like #{value}
     </select>
	 

2 Select

        Select元素是相對來說比較常見的一個元素,比如

<select id="selectPerson" parameterType="int" resultType="hashmap">
  SELECT * FROM PERSON WHERE ID = #{id}
</select>

在select中還有好多可以設定的屬性,看下面的圖表。


3  insert、update、delete

           這三個屬性的使用和select很相似,不在舉例,只是列出以下摘這三個元素中我們可能要使用到的一些屬性設定

4.主鍵生成方式

          在insert元素中,我們需要插入主鍵,這時我們就需要來設定主鍵生成方式了。

           如果你的資料庫支援自動生成主鍵的欄位(比如MySQL和SQL Server)那麼就可以設定          useGeneratedKeys=”true”,然後再把 keyProperty設定到目標屬性上。

<insert id="insertAuthor" useGeneratedKeys="true"
    keyProperty="id">
  insert into Author (username,password,email,bio)
  values (#{username},#{password},#{email},#{bio})
</insert>

對於不支援自動生成主鍵的資料庫我們就需要另一種方式來生成了。

<insert id="insertAuthor">
  <selectKey keyProperty="id" resultType="int" order="BEFORE">
    select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1
  </selectKey>
  insert into Author
    (id, username, password, email,bio, favourite_section)
  values
    (#{id}, #{username}, #{password}, #{email}, #{bio}, #{favouriteSection,jdbcType=VARCHAR})
</insert>

在上面的示例中,selectKey元素將會首先執行,Author id 會被設定,然後插入語句會被呼叫。這給你了一個和資料庫中來處理自動生成的主鍵類似的行為,避免了使 Java程式碼變得複雜。

selectKey 元素描述如下:

<selectKey
  keyProperty="id"
  resultType="int"
  order="BEFORE"
  statementType="PREPARED">

總結

mybatis的對映檔案是mybatis中涉及業務的一個對映檔案,這裡簡單的總結了常用的一些知識,下篇文章繼續。


相關推薦

Mybatis對映檔案

        Mybatis的對映檔案中定義了操作資料庫的sql,每個sql是一個Statement,因此mybatis涉及到了專案的核心,畢竟所有的sql語句都是寫在這裡的。如果說配置檔案是在告訴

Hibernate對映檔案型別錯誤

hibernate對映檔案中的“type”型別錯誤會報如下異常:java.lang.ClassCastException: java.lang.String cannot be cast to jav

Mybatismapper動態代理和對映檔案配置標籤

提要:主要演示了mybatis中,在類中的其他自定義類,在sql語句中如何取值。sql語句中,範圍sql與集合的對應   一、目錄結構 二、相關實體類 QueryVo package com.test.domain; import java.io.Seria

mybatismapper介面代替dao類對映檔案的引數

簡介 在操作物件的增刪改時候, //第一個形參:表示要呼叫的sql語句 //第二個形參:表示要傳遞才引數 session.insert("對映檔案的名稱空間.sql的id值",new User()); 如此長度的字串,不適合用. mapper

MybatisMybatis generator如何修改Mapper.java檔案

我寫的程式碼生成外掛Gitee地址 同樣是在擴充套件 Mybatis generator外掛的時候,有這樣一個需求是需要在生成的,那麼 如何修改Mapper.java檔案? 跟著Mybatis generator 原始碼去找一找 哪裡可以擴充套件 原始碼分析: 原始碼入口:Con

Mybatis如何繼承Mybatis中的Mapper.xml檔案

最近在寫一個 Mybatis 程式碼自動生成外掛,用的是Mybatis來擴充套件,其中有一個需求就是 生成javaMapper檔案和 xmlMapper檔案的時候 希望另外生成一個擴充套件類和擴充套件xml檔案。原檔案不修改,只存放一些基本的資訊,開發過程中只修改擴充套件的Ext檔案 形式

MybatisMyBatis配置檔案的使用(二)

  本例在【Mybatis】MyBatis快速入門(一)基礎上繼續學習XML對映配置檔案   MyBatis 的配置檔案包含了會深深影響 MyBatis 行為的設定(settings)和屬性(properties)資訊。文件的頂層結構如下: configuration 配置 prop

Mybatis框架中Mapper檔案傳值引數獲取。Mybatis

Mybatis框架中,Mapper檔案引數獲取一般有以下幾種: 1、引數個數為1個(string或者int) dao層方法為以下兩種: /** * 單個int型 */ public Lis

MybatisMyBatis對錶執行CRUD操作(三) MybatisMyBatis配置檔案的使用(二)

  本例在【Mybatis】MyBatis配置檔案的使用(二)基礎上繼續學習對錶執行CRUD操作 使用MyBatis對錶執行CRUD操作   1、定義sql對映xml檔案(EmployeeMapper.xml) 1 <?xml version="1.0" encoding="UTF-8"

Mybatis框架中Mapper文件傳值參數獲取。Mybatis

ram keyword ddr gem cli view ati copyto one Mybatis框架中,Mapper文件參數獲取一般有以下幾種: 1、參數個數為1個(string或者int) dao層方法為以下兩種: [java] view plain

Mybatis連接斷開問題

blog val property www nbsp nsh 數據 query uid 參考:http://www.jianshu.com/p/5124eef40bf0 http://blog.csdn.net/qianbw123/article/details/41959

MyBatis-----MyBatis--CURD---表級聯系一對一

去除 style print alt 得到 tag ack clas return 一、核心配置文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PU

MyBatis-----MyBatis---表級聯系一對多

new pda 聯合 測試 asr exc ack 負責 trace 一、核心配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//myba

mybatisIF判斷的坑

log 語法 == pan sta 標簽 使用 myba mybatis <if test="type==‘y‘"> and status = 0 </if> 即使type=y 裏面的sql也不會執行,只需改為 <if

mybatismybatis中的<if test=“”>test中多條件

ID span lun tco sel myba cloud ise uid mybatis中的<if test=“”>test中多條件 代碼展示: 其中 accountCode和apiName都是ApiAllRespBean的屬性 <select

mybatismybaits generator 逆向工程的使用

alibaba gin resolve PE div sed pen sss bsp mybatis逆向工程官方網站:http://www.mybatis.org/generator/quickstart.html

mybatismybatis中insert 主鍵自增和不自增的插入情況mysql

pro SQ class TE IV rop generate mys bat 主鍵不自增:返回值是插入的條數 <insert id="add" parameterType="EStudent"> insert into TStudent(name,

MyBatis緩存配置

big dtd 應用 使用註解 sql mapper utf actor note 前言   使用緩存可以使應用更快的獲取數據,避免頻繁的數據庫交互,尤其是在查詢越多、緩存命中率越高的情況下,使用緩存的作用就越明顯。MyBatis作為持久化框架,提供了非常強大的查詢緩存特性

mybatismybatis中 <if test=>等於的條件怎麽寫

collect dex cti lis myba ring class elf flag 經常在mybatis中使用<if test="aa != ‘值‘ ">的話 怎麽怎麽樣 那麽等於怎麽寫呢? 註意 要想使用 == 僅僅需要將雙引號和單引號的位置換

javamybatis在使用mybatis進行批量插入,批量更新等批量操作時,切割In集合List進行分批批量操作的java中的切割代碼

lse span ati 批量更新 次數 sublist 調用 size ==       紅字部分代表mybatis的批量操作調用方法:       int num = 0; int maxLength = 200; in