背景概述:
在该项目中,按照类别名称进行模糊查询(包括大小写),类别名称存在一、二级分类,对应字段分别为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
热门文章
- Oracle模糊查询,不区分大小写
- 宠物食品带货(宠物食品代理怎么做)
- 「2月26日」最高速度19.4M/S,2025年Shadowrocket/Clash/V2ray/SSR每天更新免费节点订阅链接
- 「2月19日」最高速度20.8M/S,2025年V2ray/Shadowrocket/SSR/Clash每天更新免费节点订阅链接
- 北京宠物领养公众号(北京领养宠物中心)
- 「2月8日」最高速度18.3M/S,2025年Clash/Shadowrocket/SSR/V2ray每天更新免费节点订阅链接
- 「2月15日」最高速度19.5M/S,2025年V2ray/SSR/Shadowrocket/Clash每天更新免费节点订阅链接
- 宠物领养需要押金吗多少钱(宠物领养需要押金吗多少钱一天)
- 办宠物医院需要什么资质(宠物医院开办批准手续)
- 「1月18日」最高速度18.5M/S,2025年V2ray/Shadowrocket/SSR/Clash每天更新免费节点订阅链接