首页 > 编程语言 >mybatis plus通过java代码进行权限等全局控制

mybatis plus通过java代码进行权限等全局控制

时间:2022-10-03 11:59:03浏览次数:49  
标签:java scopeSql demo deviceCodes plus mybatis 权限 append

在mapper.xml中调用java静态方法,并且传递一些参数

在静态方法中进行sql拼接,可以用于用户权限管理、数据权限管理等等

一、静态方法

拼接sql,可以调用缓存中的用户权限进行拼接

package com.example.demo.dataScope;

import java.util.List;

/**
 * 数据库权限控制器
 */
public class DataScopeUtil {

    /**
     * 装置编码集合
     * @param alias 数据库表别名
     * @param deviceCodes 数据库查询条件的参数
     */
    public static String deviceCodeListScopeSql(String alias, List<String> deviceCodes){
        StringBuilder scopeSql = new StringBuilder();
        scopeSql.append(" in (select t.id from (");
        deviceCodes.stream().forEach(e->{
            String str = " (select '"+e+"' as id from dual) union";
            scopeSql.append(str);
        });
        scopeSql.replace(scopeSql.lastIndexOf("union"),scopeSql.length(),"");
        scopeSql.append(" )t )");
        scopeSql.insert(0," and "+alias);
        return scopeSql.toString();
    }

}

二、xml使用

@com.example.demo.dataScope.DataScopeUtil 包地址

@deviceCodeListScopeSql 调用的方法名称

"gyz" 表别名,可以传 ""/null

deviceCodes mapper方法的参数名称

<select>
    ${@com.example.demo.dataScope.DataScopeUtil@deviceCodeListScopeSql("gzy",deviceCodes)}
</select>

 

标签:java,scopeSql,demo,deviceCodes,plus,mybatis,权限,append
From: https://www.cnblogs.com/Sora-L/p/16750225.html

相关文章

  • Java Api ——HDFS连接和文件创建
    写在前面:需要配置好Linux虚拟机并成功配置Hadoop idea创建maven项目导入maven:<dependencies><dependency><groupId>org.apache.hadoop</group......
  • 通用返回类设计(Java)
    通用返回类一般后端需要将数据封装成通用返回类再传递给前端/***通用返回类*@param<T>*/@DatapublicclassBaseResponse<T>implementsSerializable{......
  • 大数据必学Java基础(六十六):BlockingQueue常见子类
    文章目录​​BlockingQueue常见子类​​​​一、ArrayBlockingQueue​​​​1、添加元素​​​​2、获取元素​​​​3、源码​​​​4、其他的添加或者获取的方法都是依托......
  • MyBatis-Plus修改数据,会不会把其他字段置为null
    前两天在用MyBatis-Plus写了一张单表的增删改查,在写到修改的时候,就突然蹦出一个奇怪的想法。MyBatis-Plus的BaseMapper中有两个关于修改的方法。如下:intupdateById(@Par......
  • 封装全局异常处理(Java)
    封装全局异常处理1.定义业务异常类作用:1.相对于java的异常类,支持更多字段2.自定义构造函数,更灵活/快捷的设置字段 /***自定义异常类*@authorLL*/publ......
  • 教你如何制作浪漫的3D相册表白网站 HTML+CSS+JavaScript
    ......
  • JavaWeb 中的 HTTP 基础知识
    概念:超文本传输协议,规定了浏览器和服务器之间数据传输的规则。特点:基于TCP协议,面向连接,更安全基于请求-响应模型,一次请求对应一次响应是无状态的协议,对事务处理......
  • java网络编程--1 网络模型、网络协议
    java网络编程--1网络模型、网络协议javaweb指的是网页编程B/S网络编程指的是面向TCP/IP相关C/S1.1、概述两种不同的通信模式:实时通信:打电话连接---接了--......
  • 【JS】237-如何理解JavaScript中常用的4种排序算法?
    冒泡排序冒泡排序是我们在编程算法中,算是比较常用的排序算法之一,在学习阶段,也是最需要接触理解的算法,所以我们放在第一个来学习。算法介绍:比较相邻的两个元素,如果前一个比......
  • 【JavaScript】纯JavaScript实现单元格合并
    2016年的文章,当时在网上找到两种JavaScript合并页面单元格的方法(由于是先实现后总结的方式,所以很多时候忘记了原出处,侵权删),两种方法分别是两种实现思路,在案例中都将其整合到......