亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

1.模糊查詢

大家應該還記得sql語句的模糊查詢怎么寫吧,那就是使用關鍵字like,
并且有相應的通配符一起使用,%表示多個字符,_表示一個字符,比如說現(xiàn)在有一張表user,查詢name中第一個字母是l的人
select * from user where name like ‘_l’;
如果是查詢name中有 l 的人select * from user where name like ‘%l%’;

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

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

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

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

然后進行測試

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

解決方法1

SQL語句中的#{}換成${}

?<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>

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

3.動態(tài)設置表名

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

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

? ? </select>

注意點:我們以前在學習MySQL的時候,比如說寫一個查詢語句select * from user;我們這里的表名不能加引號對吧,同樣的道理我們在映射文件寫的sql語句,表名也不能加引號,那樣就變成字符串了,所以動態(tài)設置表名應該使用${}

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

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

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

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

相關文章

  • Java實現(xiàn)幾種常見排序算法代碼

    Java實現(xiàn)幾種常見排序算法代碼

    排序(Sorting) 是計算機程序設計中的一種重要操作,它的功能是將一個數(shù)據(jù)元素(或記錄)的任意序列,重新排列成一個關鍵字有序的序列
    2013-09-09
  • java簡單實現(xiàn)多線程及線程池實例詳解

    java簡單實現(xiàn)多線程及線程池實例詳解

    這篇文章主要為大家詳細介紹了java簡單實現(xiàn)多線程,及java爬蟲使用線程池實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • java中重寫equals()方法的同時要重寫hashcode()方法(詳解)

    java中重寫equals()方法的同時要重寫hashcode()方法(詳解)

    下面小編就為大家?guī)硪黄猨ava中重寫equals()方法的同時要重寫hashcode()方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • java 實現(xiàn)通過 post 方式提交json參數(shù)操作

    java 實現(xiàn)通過 post 方式提交json參數(shù)操作

    這篇文章主要介紹了java 實現(xiàn)通過 post 方式提交json參數(shù)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 解決SpringBoot運行Test時報錯:SpringBoot Unable to find

    解決SpringBoot運行Test時報錯:SpringBoot Unable to find

    這篇文章主要介紹了SpringBoot運行Test時報錯:SpringBoot Unable to find a @SpringBootConfiguration,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java對象的序列化和反序列化

    java對象的序列化和反序列化

    這篇文章主要為大家詳細介紹了java對象的序列化和反序列化,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Java Math類的三個方法ceil,floor,round用法

    Java Math類的三個方法ceil,floor,round用法

    這篇文章主要介紹了Java Math類的三個方法ceil,floor,round用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • idea同時打開多個項目的圖文教程

    idea同時打開多個項目的圖文教程

    這篇文章主要給大家介紹了idea同時打開多個項目的圖文教程,文章通過圖文結合的形式給大家講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Java多線程中的CountDownLatch解析

    Java多線程中的CountDownLatch解析

    這篇文章主要介紹了Java多線程中的CountDownLatch解析,CountDownLatch是一個阻塞部分線程直到其他線程執(zhí)行完成后喚醒的同步計數(shù)器,核心是其內部類Sync繼承于AQS,同時也是利用的AQS的同步原理,也稱之為閉鎖,需要的朋友可以參考下
    2023-11-11
  • Maven倉庫分類的優(yōu)先級

    Maven倉庫分類的優(yōu)先級

    本文主要介紹了Maven倉庫分類的優(yōu)先級,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04

最新評論