文章

RuoYi若依框架数据权限@DataScope使用问题

根据若依后台手册给出的示例,编写如下代码

<select id="getList" resultType="tech.pmman.system.model.db.Manufacturer">
        select * from manufacturer ${params.dataScope}
</select>

Mapper xml

@Mapper
public interface ManufacturerMapper extends BaseMapper<Manufacturer> {
    List<Manufacturer> getList();
}

Mapper方法

@DataScope(deptAlias = "d", userAlias = "u")
    public PageRes<ManufacturerRes> getManufacturerList(int pageNum, int pageSize) {
        ...
    }

Service方法

public class Manufacturer extends BaseEntity {
...
}

实体类

此时执行service方法,会发现mybatis报错无法获取到parms。

根据若依开发者的解释,方法必须传入继承BaseEntity的对象,否则无法拼接得到params.dataScope,即使方法不需要传入参数,也必须至少构造一个空对象传入。

@DataScope(deptAlias = "d", userAlias = "u")
    public PageRes<ManufacturerRes> getManufacturerList(Manufacturer param, int pageNum, int pageSize) {
        ...
    }
@Mapper
public interface ManufacturerMapper extends BaseMapper<Manufacturer> {
    List<Manufacturer> getList(Manufacturer param);
}

这里我们创建一个对应返回类型的形参,在调用时new一个空对象传入即可正常使用。

License:  CC BY 4.0