一、问题描述
在完成某个接口时,发现需求是这样的:如果是管理员角色,要查询所有信息;如果是非管理员用户,则按照当前登录用户的类别来进行查询,最简单是拆分成两个sql语句,但是这种写法有点low,还是写成一个分条件查询sql语句。
二、实现
(1)业务层关键代码实现
HashMap<String,Object> map = new HashMap<>();
map.put("flag",flag);
map.put("banktype",banktype);
map.put("userid",userid);
map.put("searchText",searchText);
List<Entity> entity = XXMapper.GetUserMenuId(map);
(2)mapper接口
List<Entity> GetUserMenuId(Map<String,Object> map);
(3)Xml中sql语句
<select id="GetUserMenuId" parameterType="Map" resultMap="BaseResultMap">
select * from user
<choose>
<when test='flag=="0"'>
where 1= 1
<if test = "searchText != null and searchText != ''">
and concat(IFNULL(USERNAME,''),IFNULL(USERID,''))

本文介绍了如何在MySQL中根据用户角色(管理员或非管理员)实现分条件查询,避免使用多个SQL语句。通过业务层关键代码、mapper接口及XML中的SQL语句展示了使用`choose`关键字来完成多条件查询,同时包含了多字段模糊匹配的实现,利用了`concat`函数。
1951

被折叠的 条评论
为什么被折叠?



