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

mybatis-plus 如何操作json字段

 更新時間:2022年10月27日 09:08:01   作者:阿拉的夢想  
這篇文章主要介紹了mybatis-plus 如何操作json字段,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

1. 演示表格準(zhǔn)備

demo表

CREATE TABLE `demo` (
? `id` bigint NOT NULL AUTO_INCREMENT,
? `tag` json DEFAULT NULL,
? PRIMARY KEY (`id`)
)

數(shù)據(jù):

idtag
1[3, 4, 5]
2[“abc”]
3[“a”, “b”, “c”]

2. SQL操作JSON

2.1.精確查詢

從數(shù)組中查詢是否包含某個特定元素

注意 ,字符串必須使用單引號+雙引號

select * from demo where json_contains(tag,'"a"');
id|tag ? ? ? ? ? ?|
--+---------------+
?3|["a", "b", "c"]|

2.2.模糊查詢

select json_search(‘{“a”:“xyzf”,“b”:{“c”:“sdf”}}',‘a(chǎn)ll',‘%f%')

select * from doc where json_search(tag,‘a(chǎn)ll',‘%d%')

其他的不再贅述

3.mybatis-plus中操作JSON字段

3.1自帶方法的JSON處理

實(shí)體類上要加上自動映射

@TableName(value="doc",autoResultMap = true)

json字段上加上json處理器

@TableName(value="doc",autoResultMap = true)
public class Doc{
?? ?@TableField(value="tag",typeHandler = FastjsonTypeHandler.class)
? ? private Set<String> tag;
} ??

這樣,使用mybatis-plus自帶的數(shù)據(jù)庫操作方法時,就可以自動映射了。自己寫的方法或SQL不管用。

3.2 QueryWrapper查詢的JSON處理

數(shù)組模糊查詢,模糊查詢tag字段數(shù)組中是否有指定的值。

QueryWrapper<Doc> wrapper = new QueryWrapper<>();
wrapper.isNotNull("json_search(tag,'all',concat('%','" + param.getTag() + "','%'))");

3.3 自定義SQL操作

查詢結(jié)果需要自定義映射,json字段需要使用typeHandler。

<resultMap id="resourceMap" type="com.demo.common.params.response.Resource" autoMapping="true" >
? ? <result column="tag" jdbcType="JAVA_OBJECT" property="tag" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" javaType="java.util.ArrayList"/>
</resultMap>
<select id="pageOfSearchKey" resultMap="resourceMap"
? ? ? ? ? ? parameterType="com.demo.common.params.request.doc.DocPageParam">
?? ?select * from doc where json_search(tag,'all',concat('%',#{param.searchKey},'%'))
</select>

新增JSON中的元素,若已存在則不新增

<update id="addTag" parameterType="com.demo.common.params.request.doc.DocTagParam">
? ? update doc set tag =json_Array_append(tag,'$',#{param.tag}) , update_time=update_time
? ? where
? ? doc_no in
? ? <foreach collection="param.docNoList" item="docNo" open="(" separator="," close=")">
? ? ? ? #{docNo}
? ? </foreach>
? ? and !JSON_CONTAINS(tag,concat('"',#{param.tag},'"'))
</update>

刪除JSON中的元素,刪除已存在的元素,元素不存在則不刪除

? ? <update id="removeTag">
? ? ? ? UPDATE doc SET tag = JSON_REMOVE(tag, JSON_UNQUOTE(JSON_SEARCH(tag, 'all', #{param.tag}))) WHERE
? ? ? ? JSON_SEARCH(tag, 'all',#{param.tag})
? ? ? ? and doc_no in
? ? ? ? <foreach collection="param.docNoList" item="docNo" open="(" separator="," close=")">
? ? ? ? ? ? #{docNo}
? ? ? ? </foreach>
? ? </update>

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring容器-BeanFactory和ApplicationContext使用詳解

    Spring容器-BeanFactory和ApplicationContext使用詳解

    這篇文章主要為大家介紹了Spring容器-BeanFactory和ApplicationContext的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 使用IDEA開發(fā)配置Java Web的初始化過程

    使用IDEA開發(fā)配置Java Web的初始化過程

    該教程使用idea開發(fā)工具初始化javaweb項(xiàng)目,該運(yùn)行在tomcat服務(wù)器上通過配置項(xiàng)目環(huán)境變量保證tomcat正常啟動,具體操作配置教程參考下本文
    2021-06-06
  • Java計(jì)算幾何圖形面積的實(shí)例代碼

    Java計(jì)算幾何圖形面積的實(shí)例代碼

    這篇文章主要介紹了Java計(jì)算幾何圖形面積的實(shí)例代碼,需要的朋友可以參考下
    2014-03-03
  • Spring標(biāo)準(zhǔn)的xml文件頭實(shí)例分析

    Spring標(biāo)準(zhǔn)的xml文件頭實(shí)例分析

    這篇文章主要介紹了Spring標(biāo)準(zhǔn)的xml文件頭實(shí)例分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • SpringBoot中間件之封裝統(tǒng)一白名單配置

    SpringBoot中間件之封裝統(tǒng)一白名單配置

    這篇文章主要介紹了SpringBoot中間件封裝統(tǒng)一白名單配置,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • java之抽象類和繼承抽象類解讀

    java之抽象類和繼承抽象類解讀

    這篇文章主要介紹了java之抽象類和繼承抽象類,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • RestTemplate返回值中文亂碼問題

    RestTemplate返回值中文亂碼問題

    這篇文章主要介紹了RestTemplate返回值中文亂碼問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 基于Pinpoint對SpringCloud微服務(wù)項(xiàng)目實(shí)現(xiàn)全鏈路監(jiān)控的問題

    基于Pinpoint對SpringCloud微服務(wù)項(xiàng)目實(shí)現(xiàn)全鏈路監(jiān)控的問題

    這篇文章主要介紹了基于Pinpoint對SpringCloud微服務(wù)項(xiàng)目實(shí)現(xiàn)全鏈路監(jiān)控的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Spring Boot 中實(shí)現(xiàn)跨域的多種方式小結(jié)

    Spring Boot 中實(shí)現(xiàn)跨域的多種方式小結(jié)

    Spring Boot提供了多種方式來實(shí)現(xiàn)跨域請求,開發(fā)者可以根據(jù)具體需求選擇適合的方法,在配置時,要確保不僅考慮安全性,還要兼顧應(yīng)用的靈活性和性能,本文給大家介紹Spring Boot 中實(shí)現(xiàn)跨域的多種方式,感興趣的朋友一起看看吧
    2024-01-01
  • 淺談Java編程中string的理解與運(yùn)用

    淺談Java編程中string的理解與運(yùn)用

    這篇文章主要介紹了淺談Java編程中string的理解與運(yùn)用,還是比較不錯的,這里分享給大家,供需要的朋友參考。
    2017-11-11

最新評論