国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

mybatis動態(tài)sql

anyway / 2555人閱讀

摘要:枚舉類型提供了提供了持久化的枚舉類型。假設(shè)表結(jié)構(gòu)的列,使用類型存儲或,對象使用枚舉類型標識當執(zhí)行語句時,或會存儲到列,如果想要存儲的時枚舉值而不是枚舉名字,就需要配置類型處理器和提供了對和的內(nèi)檢支持,將映射為,將映射為數(shù)組。

mybatis中靜態(tài)sql語句有時不足以滿足用戶的需求,因此其提供了動態(tài)sql標簽。

IF標簽

if標簽通過條件測試,動態(tài)插入sql片段,例如:

保證之間的內(nèi)容作為一般的字符處理,不做特殊處理。

choose標簽
choose標簽用于選擇第一個選擇條件,例如:

where標簽
有時,所有的查詢條件可能都是可選的,但是其中至少有一個查詢是需要的,但是若有多個查詢條件都滿足條件,這時就需要在查詢條件添加and 或or。mybatis提供了where標簽用于支持建立這種類型的sql語句,當?shù)谝粋€滿足的條件前面有and 或 or 等連接詞時,會自動刪除連接詞。例子如下所示:


trim標簽
trim標簽比where標簽更加靈活,因為它可以在條件前面加上連接詞或刪除連接詞 也可以在條件后面加上連接詞或刪除連接詞;舉例如下:



foreach標簽
foreach元素的屬性主要有 item,index,collection,open,separator,close。
item表示集合中每一個元素進行迭代時的別名.
index指 定一個名字,用于表示在迭代過程中,每次迭代到的位置.
open表示該語句以什么開始.
separator表示在每次進行迭代之間以什么符號作為分隔 符.
close表示以什么結(jié)束.
舉例如下:





set標簽
set標簽類似于where標簽,會在返回的條件前面插入set關(guān)鍵字,并移除最后一個條件的后面符號,舉例如下所示:

  update students 
  
       name=#{name},
      email=#{email},
      phone=#{phone},
  


如果三個條件都是ture,phone后面的逗號將被移除。

枚舉類型
mybatis提供了提供了持久化的枚舉類型。假設(shè) Student表結(jié)構(gòu)的gender列,使用varchar類型存儲MALE或FEMALE,Student對象使用枚舉類型標識gender.
public enum Gender{
    FEMALE,MALE
}

public class Student
{
    ....
    private Gender gender;
    ....
}

    insert into student (id,name,gender)
    values(#{id},#{name},#{gender})

當執(zhí)行insert語句時,MALE或FEMALE會存儲到gender列,如果想要存儲的時枚舉值而不是枚舉名字,就需要配置類型處理器:


CLOB和BLOB
mybatis提供了對clob和blob的內(nèi)檢支持,將clob映射為java.lang.String,將blob映射為byte[]數(shù)組。因此用戶可以像原始類型那樣處理clob和blob類型。

傳遞多個參數(shù)
mybatis提供了傳遞多個參數(shù)的內(nèi)建功能,并通過#{param}語法引用參數(shù)。舉例如下:

List findAllStudentByNameEmail(String name,String email);



將多行數(shù)據(jù)存儲到map中,并以某個列值作為key
要完成上述功能,需要使用sqlSession的selectMap方法;
舉例如下:



Map studentMap=sqlSession.selectMap("com.mybatis3.mappers.StudentMapper.findAllStudent","studId");


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70214.html

相關(guān)文章

  • Mybatis常見面試題

    摘要:執(zhí)行沒有,批處理不支持,將所有都添加到批處理中,等待統(tǒng)一執(zhí)行,它緩存了多個對象,每個對象都是完畢后,等待逐一執(zhí)行批處理。 Mybatis常見面試題 #{}和${}的區(qū)別是什么? #{}和${}的區(qū)別是什么? 在Mybatis中,有兩種占位符 #{}解析傳遞進來的參數(shù)數(shù)據(jù) ${}對傳遞進來的參數(shù)原樣拼接在SQL中 #{}是預編譯處理,${}是字符串替換。 使用#{}可以有效的防止...

    liuchengxu 評論0 收藏0
  • 面試官都會問的Mybatis面試題,你會這樣回答嗎?

    摘要:最終能和面試官聊的開心愉快投緣的叫面霸。能夠與很好的集成提供映射標簽,支持對象與數(shù)據(jù)庫的字段關(guān)系映射提供對象關(guān)系映射標簽,支持對象關(guān)系組件維護。使用可以有效的防止注入,提高系統(tǒng)安全性。 showImg(https://segmentfault.com/img/bVbsSlt?w=358&h=269); 一、概述 面試,難還是不難?取決于面試者的底蘊(氣場+技能)、心態(tài)和認知及溝通技巧。...

    seanHai 評論0 收藏0
  • mybatis深入理解(一)之 # 與 $ 區(qū)別以及 sql 預編譯

    摘要:在動態(tài)解析階段,和會有不同的表現(xiàn)解析為一個預編譯語句的參數(shù)標記符。其次,在預編譯之前已經(jīng)被變量替換了,這會存在注入問題。預編譯語句對象可以重復利用。默認情況下,將對所有的進行預編譯。總結(jié)本文主要深入探究了對和的不同處理方式,并了解了預編譯。 mybatis 中使用 sqlMap 進行 sql 查詢時,經(jīng)常需要動態(tài)傳遞參數(shù),例如我們需要根據(jù)用戶的姓名來篩選用戶時,sql 如下: sele...

    shadowbook 評論0 收藏0
  • Mybatis入門看這一篇就夠了

    摘要:什么是本是的一個開源項目年這個項目由遷移到了,并且改名為。如下的代碼,如果有多個條件的話,那么拼接起來很容易出錯查詢語句根據(jù)是否為來判斷是否是條件查詢。而如果我們使用的話,就可以免去查詢助手類了。 什么是MyBatis MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,...

    livem 評論0 收藏0
  • Mybatis系列】從源碼角度理解Mybatis的$和#的作用

    摘要:原因就是傳入的和原有的單引號,正好組成了,而后面恒等于,所以等于對這個庫執(zhí)行了查所有的操作。類比的執(zhí)行流程和原有的我們使用的方法就是。可以理解為就是用來解析定制的符號的語句。后續(xù)的流程,就和正常的流程一致了。 前言 在JDBC中,主要使用的是兩種語句,一種是支持參數(shù)化和預編譯的PrepareStatement,能夠支持原生的Sql,也支持設(shè)置占位符的方式,參數(shù)化輸入的參數(shù),防止Sql注...

    yanwei 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<