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

mybatis-plus 如何操作json字段

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

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ù)組中查詢是否包含某個(gè)特定元素

注意 ,字符串必須使用單引號(hào)+雙引號(hào)

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í)體類上要加上自動(dòng)映射

@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ù)庫(kù)操作方法時(shí),就可以自動(dòng)映射了。自己寫的方法或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>

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

相關(guān)文章

最新評(píng)論

盖州市| 额济纳旗| 康平县| 青岛市| 抚顺县| 夹江县| 大名县| 夏津县| 溆浦县| 苏尼特左旗| 从化市| 侯马市| 平果县| 卓资县| 肇源县| 大田县| 华蓥市| 方正县| 柳州市| 牡丹江市| 思南县| 汝州市| 大荔县| 济宁市| 鹰潭市| 含山县| 海口市| 吉水县| 康保县| 玉溪市| 手机| 原平市| 邳州市| 平利县| 沙河市| 宜良县| 丹巴县| 正安县| 临澧县| 上蔡县| 滨州市|