背景:
项目由于多语言的设计,将字段设置成json字段类型,同时存储中文和英文
页面上通过输入框实现模糊的查询
一、表结构:name字段设置jsonb类型
二、表数据
3、Mybatis编写sql
select pp.name ->>'zh-CN' as pmsProductName,pp.name ->>'en' as pmsProductNameEN,ppc.name->>'zh-CN' as pmsProductCategoryName,ppc.name->>'en' as pmsProductCategoryNameEN from pms_product ppwhere 1=1
<if test="null != param.pmsProductName and '' != param.pmsProductName">and (pp."name" #>>'{zh-CN}' ilike '%'||#{param.pmsProductName}||'%'or pp."name" #>>'{en}' ilike '%'||#{param.pmsProductName}||'%')</if>
4、其中pmsProductName是页面传递的值,zh-CN和en分别表示对应的中英文key
按照对应的value实现模糊查询,特别注意一下sql中jsonb value 模糊查询写法是采用 #>> 的写法,不能是正常取值的->>写法,前者可以正常查询出来,后者发现查询不出结果,一定注意!