背景概述:
在该项目中,按照类别名称进行模糊查询(包括大小写),类别名称存在一、二级分类,对应字段分别为category3_name、category4_name,其中category3_id和category4_id分别是类别名称3和4的id。对用户来说,在前端UI进行查询时,不确定是按照category3_name,还是按照category4_name进行查询。因此根据用户的输入,传至后台中,对用户的输入内容进行处理,即:
controller 中的处理
在 controller 接收来自前端的搜索内容。首先,利用函数 trim() 对搜索的内容前后空格处理;其次,搜索中的字母全部转为小写 toLowerCase()。
@ResponseBody @ApiOperation(value = "查询") @PostMapping(value = "/searchByCategory") public RestfulApiResult searchByCategory(@RequestBody Map<String,String> map) { String searchContent = map.get("searchContent").trim().toLowerCase(); log.info("设备类别搜索内容:" + searchContent); List<CategoryView> categoryList = categoryService.searchByCategory(searchContent); ... /** 省略了部分代码 */ return new RestfulApiResult(200, "success", JSONObject.toJSON(categoryList)); }
XML 中 SQL
xml 中的 sql,由于 controller 中使用 toLowerCase(),因此 sql 语句中,使用 lower()。如果 controller 使用 toUpperCase(),则 mapper 则使用 upper()。注意:前后要保持一致。
select t1.category4_id, t1.category4_name, t1.category3_id, t1.category3_name from tb_categoryview t1 join tb_select_devicesview t2 on (lower(t1.category4_name) like '%'||#{searchContent}||'%' or lower(t1.category3_name) like '%'||#{searchContent}||'%') and t1.category4_id like 'C%' and t1.category3_id = t2.category3_id and t2.category2_id in (select t3.category2_id from tb_select_devices t3) order by category4_id
热门文章
- 吉泰酒店电话(吉泰精品酒店电话)
- 三国杀限定技能(三国杀限定技能大全)
- 狗粮颗粒机器价格图片(狗粮颗粒机器价格图片及价格)
- 动物疫苗接种注意事项包括哪些(动物疫苗注射工作注意事项)
- VPN美国 | 3月10日21M/S|免费VPN/Clash/Shadowrocket/SSR/V2ray免费节点链接地址
- VPN美国 | 4月16日21.6M/S|免费VPN/Clash/V2ray/Shadowrocket/SSR免费节点链接地址
- vue路由守卫,限制前端页面访问权限
- VPN美国 | 3月27日22.3M/S|免费VPN/V2ray/Clash/SSR/Shadowrocket免费节点链接地址
- 动物医院诊疗许可证办理条件是什么意思(动物医院诊疗许可证办理条件是什么意思呀)
- VPN美国 | 3月18日19.1M/S|免费VPN/Clash/Shadowrocket/SSR/V2ray免费节点链接地址