欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis帶參查詢的方法詳解

 更新時(shí)間:2020年11月20日 15:07:13   作者:基礎(chǔ)不牢,地動(dòng)山搖  
這篇文章主要介紹了MyBatis帶參查詢的方法詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

#{}占位符

類似于jdbc中通過PreparedStatement進(jìn)行操作的方式, 會(huì)將sql語句中需要參數(shù)的位置使用?進(jìn)行占位,后續(xù)由傳進(jìn)來的參數(shù)進(jìn)行參數(shù)的綁定。?處綁定的都是值,不能指定表的列,轉(zhuǎn)換成sql時(shí)表名會(huì)被當(dāng)成字符串,會(huì)出錯(cuò),防止sql注入。

select username,age,password from 'tb_user'

簡單類型參數(shù)

簡單類型指的是: 基本數(shù)據(jù)類型, 包裝類型, String, java.sql.*。當(dāng)參數(shù)是簡單類型時(shí), MyBatis會(huì)忽略SQL語句中參數(shù)的個(gè)數(shù)和占位符的名稱, 然后將參數(shù)進(jìn)行自動(dòng)綁定. parameterType屬性可以定義參數(shù)的類型, 如果定義, 傳參時(shí)要求參數(shù)類型必須和指定的類型一致, 否則拋出ClassCastException。

<select id="selBaseType" resultType="pojo.User" parameterType="java.lang.Integer">
 select * from tb_users where id=#{id}
</select>
User user=sqlSession.selectOne("selBaseType",1);

Map類型參數(shù)

當(dāng)參數(shù)是Map集合時(shí), SQL語句中的#{}里應(yīng)該寫Map集合的key值,MyBatis會(huì)通過key只找到value然后進(jìn)行參數(shù)綁定。如果key不存在, 不會(huì)報(bào)錯(cuò),會(huì)使用null進(jìn)行參數(shù)綁定。

<select id="selByMap" resultType="pojo.User">
 select * from tb_users where username=#{username} and password=#{password}
</select>
Map<String,String> map=new HashMap<>();
map.put("username","zhangsan");
map.put("password","123456");
User user=sqlSession.selectOne("selByMap",map);

對(duì)象類型參數(shù)傳遞

當(dāng)參數(shù)是對(duì)象類型時(shí),SQL語句中的#{}里應(yīng)該寫對(duì)象的getter方法對(duì)應(yīng)的屬性名。當(dāng)getter方法不存在時(shí), 拋出異常。

<select id="selByObject" resultType="pojo.User">
 select * from tb_users where username=#{username} and password=#{password}
</select>
User user1=new User();
user1.setUsername("lisi");
user1.setPassword("123456");
User user=sqlSession.selectOne("selByObject",user1);

${}

類似于jdbc中通過Statement進(jìn)行操作的方式, 會(huì)直接將傳遞的參數(shù)和SQL語句進(jìn)行字符串的拼接。 一般當(dāng)SQL語句結(jié)構(gòu)不確定時(shí)使用。
當(dāng)表名不確定,條件不確定,排序規(guī)則不確定的時(shí)候,不能使用#{},應(yīng)該換做${}。對(duì)于簡單數(shù)據(jù)類型,應(yīng)盡量使用#{},避免錯(cuò)誤。
${}需要加''傳入的參數(shù)才能變成字符串,不然會(huì)被當(dāng)成列名。

select * from tb_users where username='${username}' and password='${password}'

如果${123}會(huì)當(dāng)成整型數(shù)字替換占位,此時(shí)傳入的參數(shù)無效。

到此這篇關(guān)于MyBatis帶參查詢的文章就介紹到這了,更多相關(guān)MyBatis帶參查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的CountDownLatch、CyclicBarrier和semaphore實(shí)現(xiàn)原理解讀

    Java中的CountDownLatch、CyclicBarrier和semaphore實(shí)現(xiàn)原理解讀

    這篇文章主要介紹了Java中的CountDownLatch、CyclicBarrier和semaphore實(shí)現(xiàn)原理詳解,CountDownLatch中調(diào)用await方法線程需要等待所有調(diào)用countDown方法的線程執(zhí)行,這就很適合一個(gè)業(yè)務(wù)需要一些準(zhǔn)備條件,等準(zhǔn)備條件準(zhǔn)備好之后再繼續(xù)執(zhí)行,需要的朋友可以參考下
    2023-12-12
  • Spring Boot中的SpringSecurity基礎(chǔ)教程

    Spring Boot中的SpringSecurity基礎(chǔ)教程

    Spring Security是一個(gè)功能強(qiáng)大且高度可定制的身份驗(yàn)證和訪問控制框架。它實(shí)際上是保護(hù)基于spring的應(yīng)用程序的標(biāo)準(zhǔn)Spring Security是一個(gè)框架,側(cè)重于為Java應(yīng)用程序提供身份驗(yàn)證和授權(quán),這篇文章主要介紹了Spring Boot中的SpringSecurity學(xué)習(xí),需要的朋友可以參考下
    2023-01-01
  • Java中雙冒號(hào)::的作用舉例詳解

    Java中雙冒號(hào)::的作用舉例詳解

    這篇文章主要給大家介紹了關(guān)于Java中雙冒號(hào)::作用的相關(guān)資料,雙冒號(hào)(::)運(yùn)算符在Java?8中被用作方法引用(method?reference),方法引用是與lambda表達(dá)式相關(guān)的一個(gè)重要特性,需要的朋友可以參考下
    2023-11-11
  • rabbitmq使用springboot實(shí)現(xiàn)direct模式(最新推薦)

    rabbitmq使用springboot實(shí)現(xiàn)direct模式(最新推薦)

    這篇文章主要介紹了rabbitmq使用springboot實(shí)現(xiàn)direct模式,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java 獲取原始請(qǐng)求域名實(shí)現(xiàn)示例

    Java 獲取原始請(qǐng)求域名實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了Java 獲取原始請(qǐng)求域名實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 利用consul在spring boot中實(shí)現(xiàn)分布式鎖場(chǎng)景分析

    利用consul在spring boot中實(shí)現(xiàn)分布式鎖場(chǎng)景分析

    這篇文章通過場(chǎng)景分析給大家介紹如何利用consul在spring boot中實(shí)現(xiàn)簡單的分布式鎖功能,代碼簡單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-09-09
  • Centos 7 安裝 OpenJDK 11 兩種方式及問題小結(jié)

    Centos 7 安裝 OpenJDK 11 兩種方式及問題小結(jié)

    這篇文章主要介紹了Centos 7 安裝 OpenJDK 11 兩種方式,第一種方式使用yum安裝,第二種方式使用tar解壓安裝,每種方法給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • idea2023設(shè)置啟動(dòng)參數(shù)、單元測(cè)試啟動(dòng)參數(shù)

    idea2023設(shè)置啟動(dòng)參數(shù)、單元測(cè)試啟動(dòng)參數(shù)

    在使用IDEA進(jìn)行開發(fā)時(shí),我們可以通過設(shè)置一些啟動(dòng)參數(shù)來優(yōu)化開發(fā)環(huán)境的性能和體驗(yàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • datatables 帶查詢條件java服務(wù)端分頁處理實(shí)例

    datatables 帶查詢條件java服務(wù)端分頁處理實(shí)例

    本篇文章主要介紹了datatables 帶查詢條件java服務(wù)端分頁處理實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java常用工具類總結(jié)

    Java常用工具類總結(jié)

    今天帶大家學(xué)習(xí)Java常用工具類,文中有非常詳細(xì)的圖文解說及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05

最新評(píng)論