MySQL JSON字段使用

–创建json数据表

CREATE TABLE `tb_json` (
  `id`                          BIGINT          UNSIGNED    NOT NULL 	                COMMENT '主键ID',
  `code`                        VARCHAR(50)     NOT NULL                                COMMENT '编码',
  `name`                        VARCHAR(50)     NOT NULL                                COMMENT '名称',
  `json_data`                   JSON                                                    COMMENT 'json数据对象',
  
  `data_status`                 TINYINT         NOT NULL    DEFAULT '1'                 COMMENT '数据状态 0 草稿,1 可用,-1 删除,默认 1',
  `creator`                     VARCHAR(50)                                             COMMENT '创建者ID',
  `creator_name`                VARCHAR(50)                                             COMMENT '创建者名称',
  `create_time`                 BIGINT                                                  COMMENT '创建时间(时间戳)',
  `updater`                     VARCHAR(50)                                             COMMENT '最后更新者ID',
  `updater_name`                VARCHAR(50)                                             COMMENT '最后更新者名称',
  `update_time`                 BIGINT                                                  COMMENT '最后更新时间(时间戳)',
  `remark`                      VARCHAR(500)                                            COMMENT '备注',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET='utf8' COLLATE='utf8_general_ci' COMMENT='json数据表';

java对象

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
//加上 autoResultMap  会自动填充Json对象
@TableName(value = "tb_json", autoResultMap = true)
public class Json implements Serializable{

	/**
	 * 主键ID
	 */
	@TableId(value = "`id`", type = IdType.INPUT)
	private Long id;

	/**
	 * 编码
	 */
	@TableField(value = "`code`")
	private String code;

	/**
	 * 名称
	 */
	@TableField(value = "`name`")
	private String name;

	/**
	 * JSON数据对象
	 */
	//需要指定解析类型
	@TableField(value = "`json`",typeHandler = FastjsonTypeHandler.class)
	private JsonVo json;

	/**
	 * 数据状态 0 草稿,1 可用,-1 删除,默认 1
	 */
	@TableField(value = "`data_status`")
	private Integer dataStatus;

	/**
	 * 创建者ID
	 */
	@TableField(value = "`creator`")
	private String creator;

	/**
	 * 创建者名称
	 */
	@TableField(value = "`creator_name`")
	private String creatorName;

	/**
	 * 创建时间(时间戳)
	 */
	@TableField(value = "`create_time`")
	private Long createTime;

	/**
	 * 最后更新者ID
	 */
	@TableField(value = "`updater`")
	private String updater;

	/**
	 * 最后更新者名称
	 */
	@TableField(value = "`updater_name`")
	private String updaterName;

	/**
	 * 最后更新时间(时间戳)
	 */
	@TableField(value = "`update_time`")
	private Long updateTime;

	/**
	 * 备注
	 */
	@TableField(value = "`remark`")
	private String remark;

}

JsonVo对象

import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;

@Data
public class JsonVo {

    /**
     * 扩展名称
     */
    @TableField(value = "`extName`")
    private String extName;

    /**
     * 扩展手机号
     */
    @TableField(value = "`extPhone`")
    private String extPhone;

}

查询json对象时

json-> '$.extPhone'

去除双引号查询json对象时

JSON_UNQUOTE(json->'$.extPhone')

查询数组时

JSON_CONTAINS(json -> '$[*].extName' ,'"ad"') 

批量列表查询时,需要自行转化数据
方法1
1、整体对象取出

select id,code,name,json_data as jsonDataObject from tb_json;

2、对象转化

import com.alibaba.fastjson.JSONObject;

String jsonDataStr = entity.getJsonDataObject().replace("\\\"","\"");
JsonVo jsonData = JSONObject.parseObject(jsonDataStr,JsonVo.class);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]中提供了一些关于MySQL使用JSON字段进行查询的示例代码。其中,可以使用json_extract函数来查询JSON字段中的特定值,使用json_contains函数来判断JSON字段是否包含某个值。另外,还可以使用JSON_REPLACE函数来更新JSON字段的值。需要注意的是,如果字段不存在,则返回null;如果JSON字段中的值为null,则返回字符串"null"。在引用\[2\]中也提供了一些使用对象类型和数组类型进行查询的示例代码。例如,可以使用JSON_UNQUOTE和JSON_EXTRACT函数来查询对象类型的字段使用JSON_CONTAINS函数来判断数组类型的字段是否包含某个值。在引用\[3\]中提供了一个JsonVo对象的示例,可以使用该对象来映射JSON字段的结构。综上所述,可以根据具体的需求使用MySQL提供的相关函数和对象来进行JSON字段的查询操作。 #### 引用[.reference_title] - *1* [mysql 查询json字段](https://blog.csdn.net/zk_jy520/article/details/126028017)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [mybatis mysql json 字段查询操作](https://blog.csdn.net/weixin_44604118/article/details/128252131)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MySQL JSON字段使用](https://blog.csdn.net/nics1993/article/details/125597245)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值