`
y806839048
  • 浏览: 1126979 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mybatis中进行三目判断,不同sql结果累加union(尤其对于多种等效权限,资源的准备)

阅读更多

 

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中,sqlserver分页

    mybatis慢SQL插件

    只需要在springboot的配置文件做简单的配置,mybatis拦截器将SQL中所有参数自动做了填充。拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL语句即可在数据库工具中执行。 使用方法: 找到你...

    通过Mybatis拦截器自动定位慢SQL并记录日志

    在Mybatis框架中,开发人员经常需要关注数据库查询性能,特别是慢SQL的定位与优化,因为它们直接影响到系统的响应速度和用户体验。为了有效地管理和解决这个问题,我们可以利用Mybatis的拦截器机制来自动检测并记录...

    mybatis 动态sql及参数传递

    在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...

    springboot+mybatis+sqlserver

    【标题】"springboot+mybatis+sqlserver"是一个基于Spring Boot、MyBatis和Microsoft SQL Server构建的基础开发框架,适用于快速开发企业级应用。这个框架整合了三个关键组件,旨在简化开发流程,提高开发效率。 ...

    mybatissql_mybatis解决sql注入

    标题 "mybatissql_mybatis解决sql注入" 暗示了我们正在讨论MyBatis框架如何处理SQL注入问题。SQL注入是一种常见的安全漏洞,攻击者可以通过恶意输入篡改SQL查询,获取、修改或删除数据库中的敏感数据。MyBatis,作为...

    MyBatis拦截器分页与动态修改SQL及其参数值

    在某些场景下,我们可能需要对SQL进行动态修改或者实现分页功能,这时MyBatis的拦截器机制就显得尤为重要。拦截器允许我们在SQL执行前后插入自定义的行为,例如添加分页条件、修改SQL参数等。 在"MyBatis拦截器分页...

    Mybatis中执行String类型的自己拼写的sql,不执行配置文件中的sql

    在MyBatis框架中,有时候我们可能需要在代码中直接编写SQL语句,而不是通过XML配置文件来执行SQL。这种情况通常发生在动态SQL或者特定场景下的临时查询中。本篇文章将详细探讨如何在MyBatis中执行String类型的自定义...

    mybatis之动态SQL

    1. `&lt;if&gt;` 标签:用于条件判断,如果指定的条件为真,则包含的 SQL 片段会被插入到最终的 SQL 语句中。例如,当查询特定用户时,可以根据用户 ID 是否为空来决定是否添加 WHERE 子句。 ```xml != null"&gt; AND id = ...

    mybatis-sql-dialect

    在项目中引入MyBatis-SQL-Dialect依赖后,开发者可以在Mapper XML文件中使用特定的方言标签,例如`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等,以条件判断的形式生成不同的SQL片段,根据实际使用的数据库类型...

    mybatis直接执行sql语句后续之一

    在IT行业中,MyBatis是一个广泛使用的持久层框架,它允许开发者直接编写SQL语句,提供了灵活的数据访问和映射机制。这篇博客“mybatis直接执行sql语句后续之一”可能探讨了如何在MyBatis中高效且有效地执行SQL操作。...

    mybatis动态SQL语句

    if 、where、set、trim、choose 、foreach等在mybatis中的具体用法,有具体实例可供参考,玩转mybatis

    mybatisx,一款打印项目sql在日志中的插件

    1. **SQL日志打印**:插件会在日志中详细输出每个SQL语句,包括原始的SQL模板、实际的参数值以及执行后的结果,这对于理解代码与数据库交互的情况非常有帮助。 2. **执行时间统计**:MybatisX还提供了SQL执行时间的...

    mybatis+spring 框架中配置日志中显示sql语句

    在MyBatis与Spring整合的框架中,为了便于调试和性能优化,我们常常需要在日志中打印出执行的SQL语句。以下是如何在这样的环境中配置日志来显示SQL语句的详细步骤。 首先,我们需要了解MyBatis的日志实现。MyBatis...

    ideal mybatis打印sql插件

    将日志输出的sql语句中的问号 ? 替换成真正的参数值。 通过 "Tools -&gt; MyBatis Log Plugin" 菜单或快捷键 "Ctrl+Shift+Alt+O" 启用。 点击窗口左边的 "Filter" 按钮,可以过滤不想要输出的sql语句。 点击窗口左边...

    原样输出mybatis的sql执行语句(mysql和oracle都可用).zip

    本文将深入探讨如何在SpringBoot(整合MyBatis)和传统的SSM(Spring、SpringMVC、MyBatis)项目中,原样输出MyBatis的SQL执行语句,以便于开发者直观地检查SQL语句是否正确和高效,从而进行优化和调试。此方法对...

    Mybatis日志SQL解析工具

    该工具可以将mybatis输出的sql日志提取出来,并将其格式化为可以直接执行的sql语句,节约开发人员时间

    SpringBoot整合Mybatis连接SQL Server 跨库批量插入

    对于Mybatis的支持,我们需要添加Mybatis和其Spring Boot Starter的依赖,同时由于我们要连接SQL Server,还需要SQL Server的JDBC驱动。在`pom.xml`文件中,可以这样配置: ```xml &lt;groupId&gt;org.spring...

    mybatis动态sql.zip

    mybatis动态sql,动态sql解析引擎,类似mybatis动态sql的功能。 mybatis动态sql,动态sql解析引擎,类似mybatis动态sql的功能。mybatis动态sql,动态sql解析引擎,类似mybatis动态sql的功能。mybatis动态sql,...

    mybatis如何防止SQL注入

    ### MyBatis如何防止SQL注入 #### SQL注入简介与危害 SQL注入是一种常见的Web应用程序安全漏洞,攻击者可以通过提交恶意的SQL代码到应用程序的输入字段中(如表单、URL等),利用这些输入来操控数据库执行非预期的...

Global site tag (gtag.js) - Google Analytics