最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis中特殊SQL的執(zhí)行

 更新時(shí)間:2022年04月07日 08:29:43   作者:Java的學(xué)習(xí)之路  
這篇文章主要介紹了Mybatis中特殊SQL的執(zhí)行,介紹內(nèi)容包括模糊查詢、批量刪除、動(dòng)態(tài)設(shè)置表名、添加功能獲取自增的主鍵等相關(guān)資料,需要的小伙伴可以參考一下

1.模糊查詢

大家應(yīng)該還記得sql語(yǔ)句的模糊查詢?cè)趺磳懓桑蔷褪鞘褂藐P(guān)鍵字like,
并且有相應(yīng)的通配符一起使用,%表示多個(gè)字符,_表示一個(gè)字符,比如說(shuō)現(xiàn)在有一張表user,查詢name中第一個(gè)字母是l的人
select * from user where name like ‘_l’;
如果是查詢name中有 l 的人select * from user where name like ‘%l%’;

模糊查詢不可以使用#{},接下來(lái)通過(guò)案例來(lái)說(shuō)明一下,提供一個(gè)mapper接口用來(lái)測(cè)試,里面定義了操作數(shù)據(jù)庫(kù)的各種方法

/**
? ? ?* 根據(jù)用戶名模糊查詢用戶信息
? ? ?*/
? ? List<User> getUserByLike(@Param("username") String username);

在映射文件中寫上我們要進(jìn)行執(zhí)行的sql語(yǔ)句

<select id="getUserByLike"
resultType="com.atguigu.mybatis.pojo.User">
? ? ? ? select *
? ? ? ? from t_user
? ? ? ? where username like ?'%#{username}%';
? ? </select>??

然后進(jìn)行測(cè)試

那要怎么解決上述問(wèn)題呢,有兩種方式可以解決。

解決方法1

SQL語(yǔ)句中的#{}換成${}

?<select id="getUserByLike"
resultType="com.atguigu.mybatis.pojo.User">
? ? ? ? select *
? ? ? ? from t_user
? ? ? ? where username like ?'%${username}%';
? ? </select>?

解決方法2

使用字符串拼接

?<select id="getUserByLike" resultType="com.atguigu.mybatis.pojo.User">
? ? ? ? select *
? ? ? ? from t_user
? ? ? ? where username like ?concat('%',#{username},'%');
? ? </select>

解決方法3(建議使用這種方式)

?<select id="getUserByLike" resultType="com.atguigu.mybatis.pojo.User">
? ? ? ? select *
? ? ? ? from t_user
? ? ? ? where username like ? "%"#{username}"%";
? ? </select>

2.批量刪除

delete from 表名 where 篩選條件

?int delete(@Param("ids") String ids);

在映射文件中寫下面的代碼

?<delete id="delete" >
? ? ? ? delete ?from t_user where id in(#{ids});

? ? </delete>

那我們要怎么解決呢?

可以使用${}

?<delete id="delete" >
? ? ? ? delete ?from t_user where id in(#{ids});

? ? </delete>

總結(jié): 在這里批量刪除不能使用#{},因?yàn)樗鼤?huì)自動(dòng)加上’ '進(jìn)行字符串拼接 ,而我們的數(shù)據(jù)庫(kù)中,字段id的屬性是int類型的,由于#{}會(huì)自動(dòng)加上單引號(hào)所以不可以,是不正確的,但是如果id字段的屬性是varchar,我們就得用#{],而不是${}

3.動(dòng)態(tài)設(shè)置表名

也就是說(shuō)我們查詢的時(shí)候,能不能不要把表名給寫死,我們可以傳入表的名字,然后根據(jù)表名來(lái)查詢數(shù)據(jù)

? /**
? ? ?* 查詢表名來(lái)查詢數(shù)據(jù)
? ? ?*/
? ? List<User> getUserByTableName(@Param("tableName") String table);
?<select id="getUserByTableName" resultType="com.atguigu.mybatis.pojo.User">
?
? ? ? ? select * from ${tableName}

? ? </select>

注意點(diǎn):我們以前在學(xué)習(xí)MySQL的時(shí)候,比如說(shuō)寫一個(gè)查詢語(yǔ)句select * from user;我們這里的表名不能加引號(hào)對(duì)吧,同樣的道理我們?cè)谟成湮募懙膕ql語(yǔ)句,表名也不能加引號(hào),那樣就變成字符串了,所以動(dòng)態(tài)設(shè)置表名應(yīng)該使用${}

4. 添加功能獲取自增的主鍵

  • t_clazz(clazz_id,clazz_name)
  • t_student(student_id,student_name,clazz_id)
  • 1.添加班級(jí)信息
  • 2.獲取新添加的班級(jí)id
  • 3.為班級(jí)分配學(xué)生,就是說(shuō)把某一個(gè)學(xué)生的班級(jí)id修改成新添加的班級(jí)id
/**
?
添加用戶信息
?
?
useGeneratedKeys:設(shè)置使用自增的主鍵

keyProperty:因?yàn)樵鰟h改有統(tǒng)一的返回值是受影響的行數(shù),
因此只能將獲取的自增的主鍵放在傳輸?shù)膮?shù)user對(duì)象的某個(gè)屬性中
*/
int insertUser(Useruser);
<!
--int insertUser(Useruser);
-->
<insert id="insertUser"useGeneratedKeys="true"keyProperty="id">
insert into t_user values(null,#{username},#{password} )
</insert>

到此這篇關(guān)于Mybatis中特殊SQL的執(zhí)行的文章就介紹到這了,更多相關(guān)Mybatis SQL 執(zhí)行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Idea工具中創(chuàng)建 SpringBoot工程及入門詳解

    Idea工具中創(chuàng)建 SpringBoot工程及入門詳解

    這篇文章主要介紹了Idea工具中創(chuàng)建 SpringBoot工程及入門分析詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Springboot整合Shiro的代碼實(shí)例

    Springboot整合Shiro的代碼實(shí)例

    這篇文章主要介紹了Springboot整合Shiro的代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • java并發(fā)之synchronized

    java并發(fā)之synchronized

    這篇文章主要介紹了java并發(fā)關(guān)鍵字synchronized,包括內(nèi)容synchronized的使用、synchronized背后的Monitor、synchronized保證可見性和防重排序、使用synchronized注意嵌套鎖定,具體內(nèi)容請(qǐng)看下面文章吧
    2021-10-10
  • 基于SpringBoot?使用?Flink?收發(fā)Kafka消息的示例詳解

    基于SpringBoot?使用?Flink?收發(fā)Kafka消息的示例詳解

    這篇文章主要介紹了基于SpringBoot?使用?Flink?收發(fā)Kafka消息,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • elasticsearch聚合查詢實(shí)踐示例

    elasticsearch聚合查詢實(shí)踐示例

    這篇文章主要為大家介紹了elasticsearch聚合查詢實(shí)踐示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • SpringBoot 使用Mybatis分頁(yè)插件實(shí)現(xiàn)詳解

    SpringBoot 使用Mybatis分頁(yè)插件實(shí)現(xiàn)詳解

    這篇文章主要介紹了SpringBoot 使用Mybatis分頁(yè)插件實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 一文講解Java的String、StringBuffer和StringBuilder的使用與區(qū)別

    一文講解Java的String、StringBuffer和StringBuilder的使用與區(qū)別

    String是不可變的字符序列,而StringBuffer和StringBuilder是可變的字符序列,本文就來(lái)詳細(xì)的介紹一下Java的String、StringBuffer和StringBuilder的使用與區(qū)別,感興趣的可以了解一下
    2024-03-03
  • Spring Shell打Jar包時(shí)常用小技巧

    Spring Shell打Jar包時(shí)常用小技巧

    這篇文章主要介紹了Spring Shell打Jar包時(shí)常用小技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • nacos配置中心遠(yuǎn)程調(diào)用讀取不到配置文件的解決

    nacos配置中心遠(yuǎn)程調(diào)用讀取不到配置文件的解決

    這篇文章主要介紹了nacos配置中心遠(yuǎn)程調(diào)用讀取不到配置文件的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(43)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(43)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07

最新評(píng)論

电白县| 肇庆市| 琼结县| 册亨县| 皮山县| 沧源| 嘉祥县| 化州市| 玉门市| 平山县| 宜宾市| 莱芜市| 天门市| 突泉县| 界首市| 绵阳市| 盐津县| 万全县| 樟树市| 喀什市| 萝北县| 忻州市| 武宁县| 米泉市| 博白县| 保德县| 济阳县| 应用必备| 夏津县| 繁峙县| 绥阳县| 道真| 仪征市| 宣武区| 连南| 静乐县| 绥阳县| 黄龙县| 措美县| 沈阳市| 称多县|