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)文章
SpringMVC?@RequestMapping注解屬性詳細(xì)介紹
通過@RequestMapping注解可以定義不同的處理器映射規(guī)則,下面這篇文章主要給大家介紹了關(guān)于SpringMVC中@RequestMapping注解用法的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02Spring?Security如何實現(xiàn)升級密碼加密方式詳解
這篇文章主要為大家介紹了Spring?Security實現(xiàn)升級密碼加密方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01spring boot配置ssl(多cer格式)超詳細(xì)教程
這篇文章主要介紹了spring boot配置ssl(多cer格式)超詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-11-11vscode搭建java開發(fā)環(huán)境的實現(xiàn)步驟
本文主要介紹了vscode搭建java開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03