mybatis + mysql json精準查詢

參數:

{
	"productName": "華爲MatePad Pro",
	"managerAttrs": "{\"code\":\"OKs\"}",
	"technicalAttrs": "{\"code\":\"OK\"}",
	"simplePageInfo": {
		"pageNum": "1",
		"pageSize": "10"
	}
}

代碼:

        List<Map<String, String>> managers = new ArrayList<>();

        //.......

        if (StringUtils.isNotBlank(queryProductVo.getManagerAttrs())){
            JSONObject jsonManager = JSONObject.parseObject(queryProductVo.getManagerAttrs());
            Map<String, Object> mapManager = jsonManager;
            for (Map.Entry<String, Object> m : mapManager.entrySet()) {
                Map<String, String> m1 = new HashMap<>();
                m1.put("k", m.getKey());
                m1.put("v", String.valueOf(m.getValue()));
                managers.add(m1);
            }
            productMap.put("managerList", managers);
        }
        Page<Map<String, String>> productList = productMapper.queryProductList(productMap);

實體類(部分)字段:

  @ApiModelProperty("技術屬性")
  private String technicalAttrs;

  @ApiModelProperty("管理屬性")
  private String managerAttrs;

  private List<Map<String, String>> technicalAttrList;

  private List<Map<String, String>> managerList;

Mapper:

 <if test="technicalAttrList!=null and technicalAttrList!=''">
      <foreach collection="technicalAttrList" item="item" index="index" open=" " separator=" " close=" ">
            AND TECHNICAL_ATTRS->'$.${item.k}' = #{item.v}
      </foreach>
</if>

 <if test="managerList!=null and managerList!=''">
      <foreach collection="managerList" item="item" index="index" open=" " separator=" " close=" ">
           AND MANAGER_ATTRS->'$.${item.k}' = #{item.v}
      </foreach>
 </if>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章