package vip.xiaonuo.sys.modular.cg.entity;
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 lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 宏茂端-供应商表
* @TableName hm_cg_supplier
*/
@TableName(value ="hm_cg_supplier")
@Data
public class Supplier implements Serializable {
//供应商id
@TableId(type = IdType.AUTO)
private Long id;
//仓库负责人 json集合
private String chargeUserJson;
//仓库负责人id json集合
private String chargeUserIdJson;
//协同人 json集合
private String helperJson;
//协同人id json集合
private String helperIdJson;
private static final long serialVersionUID = 1L;
}
@Override
public Page<SupplierVO> pageList(SupplierQueryDTO queryDTO) {
LambdaQueryWrapper<Supplier> wrapper = Wrappers.lambdaQuery(Supplier.class);
if (StringUtils.isNotBlank(queryDTO.getChargeUser())) {
List<String> list = Arrays.asList(queryDTO.getChargeUser());
wrapper.apply("JSON_CONTAINS(charge_user_json, {0})", JSON.toJSONString(list));
}
if (StringUtils.isNotBlank(queryDTO.getHelper())) {
List<String> list = Arrays.asList(queryDTO.getHelper());
wrapper.apply("JSON_CONTAINS(helper_json, {0})", JSON.toJSONString(list));
}
Page<Supplier> page = baseMapper.selectPage(new Page<>(queryDTO.getCurrent(), queryDTO.getSize()), wrapper);
Page<SupplierVO> result = new Page<>();
if (CollectionUtils.isEmpty(page.getRecords())) {
return result;
}
List<SupplierVO> voRecords = page.getRecords().stream()
.map(this::convertToVO)
.collect(Collectors.toList());
result.setTotal(page.getTotal());
result.setRecords(voRecords);
return result;
}
数据格式:["1773642241683365889", "1773642483136864257", "1773644886695440386"]
list里的值有”1773642241683365889“ 和 ”1773642483136864257“
wrapper.apply("JSON_CONTAINS(charge_user_json, {0})", JSON.toJSONString(list));
对应sql
SELECT * FROM `basics_product` WHERE JSON_CONTAINS(picture_file_ids, '["1773642241683365889","1773642483136864257"]');
sql例子:
CREATE TABLE `users` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL COMMENT '姓名',
`address` json NOT NULL COMMENT '住址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `users` VALUES (1, '张三', '{\"city\": \"石家庄市\", \"tags\": [\"家\", \"公司\"], \"district\": \"桥西区\", \"province\": \"河北省\"}');
INSERT INTO `users` VALUES (2, '李四', '{\"city\": \"广州市\", \"tags\": [\"宿舍\"], \"district\": \"珠海区\", \"province\": \"广州省\"}');
INSERT INTO `users` VALUES (3, '王五', '{\"city\": \"长春市\", \"district\": \"绿园区\", \"province\": \"吉林省\"}');
INSERT INTO `users` VALUES (4, '刘六', '{\"city\": \"昌平区\", \"province\": \"北京市\"}');
INSERT INTO `users` VALUES (5, '张三三', '[{\"city\": \"石家庄市\", \"tags\": [\"家\", \"公司\", \"学校\"], \"district\": \"桥西区\", \"province\": \"河北省\"}, {\"city\": \"郑州市\", \"tags\": [\"宿舍\"], \"district\": \"桥东区\", \"province\": \"河南省\"}]');
INSERT INTO `users` VALUES (6, '李四四', '[{\"city\": \"广州市\", \"tags\": [\"宿舍\"], \"district\": \"珠海区\", \"province\": \"广州省\"}, {\"city\": \"广州市\", \"district\": \"珠海区\", \"province\": \"广州省\"}]');
INSERT INTO `users` VALUES (7, '王五六', '[\"家\", \"公司\", \"学校\"]');
查询json对象指定属性值的数据
1、函数查询:json_extract(
json字段, '$.json属性')
select * from users where json_extract(address, '$.province') = "河北省";
2、对象操作方法进行查询:json字段->'$.json属性'
1 |
|
查询json数组指定下标值的数据
1、数组操作方式查询:字段->'$[0]'
1 |
|
根据JSON对象里面的属性个数查询
1、函数查询:json_length(
json字段)
1 |
|
根据JSON数组里面的数组长度查询
1、函数查询:json_length(
json字段)
1 |
|
查询JSON对象属性值为数组的任意项存在指定值查询
1、函数查询:JSON_CONTAINS(json字段,JSON_OBJECT('json数组属性', '内容'))
1 |
|
查询JSON数组里面对象属性任意项存在指定属性的数据
1 |
|
查询JSON对象存在指定属性的数据
1 |
|