mybatis中进行三目判断,不同sql结果累加union(尤其对于多种等效权限,资源的准备)
<sql id="selectProjectByUserBaseSql">
SELECT p.*,
IF(s.`id` is NULL, FALSE, TRUE) as 'isStar',
u.`id` as 'createBy.id',
IF(u.`name` is NULL, u.`username`, u.`name`) as 'createBy.username',
u.`avatar` as 'createBy.avatar'
from project p
left join `user` u on u.`id` = p.`user_id`
left join star s on (s.target_id = p.id and s.`target` = 'project' and s.user_id = #{userId})
where p.id in (
<!-- 当前用户是project的创建者或管理员 -->
select DISTINCT p.id
from project p
left join rel_project_admin rpa on rpa.project_id = p.id
where p.user_id = #{userId} or rpa.user_id = #{userId}
union all
<!-- 当前用户权限关联的project -->
select DISTINCT p.id
from project p
left join rel_role_project rrp on rrp.project_id = p.id
left join rel_role_user rru on rru.role_id = rrp.role_id
where rru.user_id = #{userId}
union all
<!--当前用户是project所在org的owner-->
select DISTINCT p.id
from project p
left join rel_user_organization ruo on ruo.org_id = p.org_id
left join organization o on o.id = p.org_id
where o.user_id = #{userId}
union all
<!--当前org 下project对普通成员可见-->
select DISTINCT p.id
from project p
left join rel_user_organization ruo on ruo.org_id = p.org_id
left join organization o on o.id = p.org_id
where ruo.user_id = #{userId} and (ruo.role = 1 or (p.visibility = 1 and o.member_permission = 1))
)
</sql>
相关推荐
mybatis中,sqlserver分页
Mybatis中执行String类型的自己拼写的sql,不执行配置文件中的sql mybatis sql connection mybatis中使用sql,不实用配置文件中的sql实例
只需要在springboot的配置文件做简单的配置,mybatis拦截器将SQL中所有参数自动做了填充。拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL语句即可在数据库工具中执行。 使用方法: 找到你...
通过Mybatis拦截器自动定位慢SQL并记录日志
在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...
MyBatis动态拼接SQL
if 、where、set、trim、choose 、foreach等在mybatis中的具体用法,有具体实例可供参考,玩转mybatis
其中,动态SQL是MyBatis的一个重要特性,它允许用户根据不同的条件拼接SQL语句,从而实现更加灵活和可扩展的数据库操作。 在MyBatis中,动态SQL使用的主要方式是通过使用XML或注解来编写SQL语句。下面我将简单介绍...
该工具可以将mybatis输出的sql日志提取出来,并将其格式化为可以直接执行的sql语句,节约开发人员时间
mybatis之动态SQL
将日志输出的sql语句中的问号 ? 替换成真正的参数值。 通过 "Tools -> MyBatis Log Plugin" 菜单或快捷键 "Ctrl+Shift+Alt+O" 启用。 点击窗口左边的 "Filter" 按钮,可以过滤不想要输出的sql语句。 点击窗口左边...
mybatis+spring 框架中配置日志中显示sql语句
Mybatis日志中的SQL解析工具(网页版) 说明:复制日志时,必须注意,日志必须包含Preparing:和Parameters:全部内容,而且日志换行格式要保留,不要复制成纯文本,直接ctrl+c即可。
mybatis动态sql,动态sql解析引擎,类似mybatis动态sql的功能。 mybatis动态sql,动态sql解析引擎,类似mybatis动态sql的功能。mybatis动态sql,动态sql解析引擎,类似mybatis动态sql的功能。mybatis动态sql,...
非常好用的,就是你们所要的 Mybatis日志参数快速替换占位符 sql参数替换工具html
mybatis SQL日志解析;查看日志时mybatis打印的日志查询条件以及参数不是拼接好的,想复制对应sql在本地执行时比较麻烦,通过前端编写页面进行日志解析,拼接sql中的问号以及参数变课轻松实现
mybatis直接拼写sql即原生sql返回结果bootstarp datatable struts2 jquery 手机端html5响应式整合
1.log4j配置sql打印 (sql参数?) 2.mybatis拦截器sql打印(sql参数 实参)
mybatis如何防止SQL注入
这是个人搭建的基础开发框架,比较简单,可以自由拓展。里面还包含了部分钉钉api,有问题请留言指教小弟