角色表
权限表
用户表
查询用户的权限
select p.permission_name
from tb_user u
join tb_role r on JSON_CONTAINS(u.role, CAST(r.id as CHAR))
join tb_permission p on JSON_CONTAINS(r.permissions, CAST(p.id as CHAR))
where u.id=#{userId} and u.`status`=1;
json_contains中,第二个数字必须是char格式,不是的需要转换一下
执行结果
我个人认为就是因为我是把json_contains作为查询的条件,所以,他会把里面的东西直接划分为什么等于什么直接查询
解释:
select JSON_ARRAY(1,2,3);
这条语句就是创建json数组包含的元素
执行结果
select JSON_CONTAINS(JSON_ARRAY(10,20,30), "10");
查看json数组是否包含某一元素
执行结果