Java Mybatis 如何动态条件查询 JSON数据类型值?

如在数据库中有一张表 dress(服装),它有一个专门用来存特殊属性的字段:json_data ,字段类型是JSON格式的. 存放的JSON格式多为:

{
color:'',
type:'',
size:'',
}

如果我要在后端查出 json_data 字段中 color 包含 red 的数据怎么办呢?
目前已知数据库的查询语法是:

select * from dress where json_data->'$.color' like '%red%'

那我在Java中如何配合 Mybatis-plus实现呢,以及如果查询的条件是动态的(假如前端传 size),怎么办呢?

阅读 3k
3 个回答

据我所知,Mybatis-plus现在并没有很好的支持这种查询方式。

但是反向思考一下。
存特殊属性的字段:json_data 这个的合理性?

一般来说是,冗余数据、不易修改、一个整体的。尤其是不会单独去查询的场景。而且这样也不好建索引吧。

MySQL毕竟是一个关系型数据库。你这样使用的话,可以考虑MongoDB;或者将里面需要作为查询的字段提取出来;

字段转实体类
image.png
image.png
image.png

不建议这么设计数据库,用不到索引的。
如果是遗留项目,也建议花点时间重构下。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题