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