Mybatis plus 查询mysql json字段的一些方法
By:Roy.LiuLast updated:2025-01-08
最近搞的一个项目,需要用到mybais plus 与mysql Json 字段交互,并且有很多查询的地方。简单记录下,一些常用的方式。
背景:有一个字段需要存储多语言的翻译。所以就在mysql里面定义了一个json字段。里面的内容大概如下:
{"FR": "法语", "en": "English", "zh": "中文"}在程序里面,需要对这些语言动态修改,扩展,以及查询, 先记录一些常用的查询方式:
用QueryWrap 查询:
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
// 创建QueryWrapper
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 构建查询条件
queryWrapper.and(wrapper -> wrapper
.like("json_data->>'$.FR'", "法语")
);
// 执行查询
List<User> users = userService.list(queryWrapper);2. 用LambdaQueryWrap 查询:
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
// 创建LambdaQueryWrapper
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
// 构建查询条件
queryWrapper.apply("JSON_EXTRACT(json_data, '$.FR') LIKE {0}", "%" + "法语" + "%");
// 执行查询
List<User> users = userService.list(queryWrapper); 3. 还可以采用 JSON_SEARCH 来实现:
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
// 创建LambdaQueryWrapper
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
// 构建查询条件
queryWrapper.apply("JSON_SEARCH(json_data, 'one', '法语') IS NOT NULL");
// 执行查询
List<User> users = userService.list(queryWrapper);From:一号门
Previous:java判断文本中是否包含简体中文或者繁体中文的方法
Next: None

COMMENTS