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

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)文章

最新評論

安西县| 汕头市| 大同县| 岳西县| 安泽县| 邢台市| 睢宁县| 竹溪县| 蓬安县| 建昌县| 高密市| 寻乌县| 西贡区| 即墨市| 泗洪县| 黔西县| 天水市| 长垣县| 朝阳县| 万宁市| 东港市| 怀来县| 岑溪市| 武功县| 岳阳市| 华坪县| 凤庆县| 阿尔山市| 南京市| 扶沟县| 肇州县| 菏泽市| 眉山市| 普兰店市| 团风县| 石家庄市| 连山| 宣化县| 江达县| 潞西市| 中牟县|