# mybatis-plus-json-support **Repository Path**: mybatis-plus-support/mybatis-plus-json-support ## Basic Information - **Project Name**: mybatis-plus-json-support - **Description**: 让Mybatisplus支持json字段的查询 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-07-10 - **Last Updated**: 2025-10-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 介绍 让 _Mybatisplus_ 支持用 _Lambda_ 方式来查询 _json_ 字段 ### 适用场景 开发过程中,最痛苦的莫过于对 _json_ 字段的处理,尤其是要基于 _json_ 字段中的某个属性的值做查询,简直痛苦到窒息。下面是一段示例代码: ```java LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.apply("json ->> '$.mm' = '123'"); mapper.selectList(lambdaQueryWrapper); ``` 单个属性的查询还好说,如果是多个字段联合查询,简直要老命了,需要在小小的 _apply()_ 方法里疯狂的拼接 _sql_ ,尤其是习惯了 _Mybatisplus_ 提供的 _Lambda_ 工具以后更难受了。 试问,为什么 _json_ 字段的查询不能也用 _Lambda_ 的方式来编码呢?你的救星来了,它就是 _mybatis-plus-json-support_ !!! ### pom文件引入[点击此处查看最新版本号](https://central.sonatype.com/artifact/com.xiaoyudeguang/mybatis-plus-json-support) ```xml com.xiaoyudeguang mybatis-plus-json-support ${最新版本} ``` ## 使用教程 假设sys_user表中有一个json字段,格式如下: ``` {"tt": "23424", "mm": "23424"} ``` SysUser实体: ``` @Data @Builder @AllArgsConstructor @NoArgsConstructor @TableName("sys_user") public class SysUser extends com.xiaoyudeguang.model.Model { private static final long serialVersionUID = 1L; /** * 会将sys_user表里的json字段中的userNo的值赋值到此字段 */ @JsonField private String userNo; /** * 会将sys_user表里的json字段中的userName的值赋值到此字段 */ @JsonField private String userName; /** * exist为false表示不接受json字段中的同名字段赋值 */ @JsonField(exist = false) private List roleList; } ``` 使用mybatis-plus-json-support时查询操作就很简单啦,下面是一个示例: ```java import com.xiaoyudeguang.mapper.SysUserMapper; import com.xiaoyudeguang.model.SysUser; import com.xiaoyudeguang.util.JsonWrappers; import org.springframework.beans.factory.annotation.Autowired; import java.util.List; public class Test { @Autowired private SysUserMapper sysUserMapper; public List test(String userNo) { return JsonWrappers.lambdaQuery().eq(SysUser::getUserNo, userNo).selectList(); } } ``` 带或条件查询: ``` import com.xiaoyudeguang.mapper.SysUserMapper; import com.xiaoyudeguang.model.SysUser; import com.xiaoyudeguang.util.JsonWrappers; import com.xiaoyudeguang.wrapper.JsonStreamLambdaQueryWrapper; import org.springframework.beans.factory.annotation.Autowired; import java.util.List; public class Test { @Autowired private SysUserMapper sysUserMapper; public List test(String userNo) { JsonStreamLambdaQueryWrapper jsonStreamLambdaQueryWrapper = JsonWrappers.lambdaQuery(); jsonStreamLambdaQueryWrapper.eq(SysUser::getUserNo, userNo); //或条件查询 jsonStreamLambdaQueryWrapper.and(wrapper -> { wrapper.eq(SysUser::getUserName, "张三").or().eq(SysUser::getUserName, "lisi"); }); return jsonStreamLambdaQueryWrapper.selectList(); } } ```