Mybatis使用concat函數(shù)問題
Mybatis使用concat函數(shù)
開發(fā)時遇到一個需求,用戶角色存在變更,使用關(guān)聯(lián)關(guān)系浪費空間,于是想到使用在數(shù)據(jù)庫字段中存放字符串,以,分割,這樣獲取到數(shù)據(jù)之后使用
AuthorityUtils.commaSeparatedStringToAuthorityList(param)
即可將用戶角色轉(zhuǎn)成list集合,數(shù)據(jù)庫中字段信息如下

如圖所示,用戶role字段對應(yīng)用戶角色信息,但是用戶角色可能會添加也可能會刪除某個角色,當(dāng)然查出來利用java語言拼接字符串是肯定沒問題的,通過查找資料我決定使用MySQL的concat函數(shù),及service層將要添加的角色字符串傳過來,Mybatis直接在數(shù)據(jù)庫字段的基礎(chǔ)上添加當(dāng)前字符串。
代碼如下:
int updateRole(Account account);
Mybatis代碼如下:
<update id="updateRole" parameterType="org.pet.king.entity.Account">
update account set
role=concat(role,',',#{role,jdbcType=VARCHAR})
where id =
#{id,jdbcType=VARCHAR} and state='A'
</update>
這種情況下根據(jù)用戶標(biāo)識以及需要添加的角色即可將用戶權(quán)限修改,需要注意concat里面有三個參數(shù),第一個參數(shù)為數(shù)據(jù)庫字段名,第二個參數(shù)是分割符,,第三個參數(shù)及service層傳過來的字符串。
親測有效,需要注意的是某些情況下要考慮到字符的轉(zhuǎn)義問題。
Mybatis的基本函數(shù)講解
SUBSTRING(STR,BIN,LEN);(字符串,開始位,長度)length(str)長度 utf-8 中文3字節(jié)
mybatis 模糊查詢 concat("%",字符串,“%”)
e.g..
select a.*,b.storeName,concat("%",a.storeName,"%") ?from tbreport a, tbstore b where b.storeName like concat("%",a.storeName,"%")總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java基礎(chǔ)知識之StringWriter流的使用
這篇文章主要介紹了Java基礎(chǔ)知識之StringWriter流的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
SpringBoot中的Profile多環(huán)境配置方法
這篇文章主要介紹了SpringBoot中的Profile多環(huán)境配置,SpringBoot提供了兩種多環(huán)境配置的方式,分別是使用profile文件進行多環(huán)境配置以及使用@Profile注解進行多環(huán)境配置,需要的朋友可以參考下2023-01-01
EasyExcel實現(xiàn)讀寫Excel文件的示例代碼
EasyExcel是阿里巴巴開源的一個excel處理框架,以使用簡單、節(jié)省內(nèi)存著稱。它可以在盡可能節(jié)約內(nèi)存的情況下支持讀寫百M的Excel,所以本文就將利用它實現(xiàn)讀寫Excel文件,感興趣的可以了解一下2022-08-08
SpringBoot打jar包遇到的xml文件丟失的解決方案
這篇文章主要介紹了SpringBoot打jar包遇到的xml文件丟失的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
Java的MyBatis框架中對數(shù)據(jù)庫進行動態(tài)SQL查詢的教程
這篇文章主要介紹了Java的MyBatis框架中對數(shù)據(jù)庫進行動態(tài)SQL查詢的教程,講解了MyBatis中一些控制查詢流程的常用語句,需要的朋友可以參考下2016-04-04

