项目中mybatis-plus中利用QueryWrapper对象自定义查询条件实现

项目中mybatis-plus中利用QueryWrapper对象自定义查询条件实现

  • 1.自定义数据过滤的方法
  • 2.自定义mapper的查询方法
    • interface中
    • xml文件中

1.自定义数据过滤的方法

@Override
public QueryWrapper dataScopeFilter(Long sysUserId,String userAlias,String companyAlias){
1).根据用户id sysUserId查询用户
//如果查询的用户读取数据的范围等于设定值 则组装一个QueryWrapper对象 
 if (GlobalConfig.DATA_SCOPE_COMPANY_AND_CHILD.equals(oaSysRole.getDataScope())) {
                        qw.eq(String.format("%s.%s", officeAlias, companyAlias), sysUser.getCompanyId());
                        qw.or();
                        qw.likeRight(String.format("%s.%s", companyAlias, parentIds), this.getParentIds(sysUser.getCompanyId()) + sysUser.getCompanyId() + ",");
                    } else if (GlobalConfig.DATA_SCOPE_COMPANY.equals(oaSysRole.getDataScope())) {
                        qw.eq(String.format("%s.%s", companyAlias, officeId), sysUser.getCompanyId());
                        qw.or();
                        qw.eq(String.format("%s.%s", companyAlias, parentId), sysUser.getCompanyId());
              
                        qw.eq(String.format("%s.%s", companyAlias, type), EOffIceType.dept.getValue());
                    }
                    return qw;
}

2.自定义mapper的查询方法

将上一步返回的对象作为参数传递给mapper的查询方法。

List ods = sysGetOfficeIdListMapper.selectOfficeList(queryWrapper);

interface中

 List selectOfficeList(@Param(Constants.WRAPPER) Wrapper wrapper);

xml文件中

  

${ew.customSqlSegment} 会替换成参数中queryWrapper对象的条件,从而组装成一个完整的sql进行查询。

你可能感兴趣的:(Java,JavaEE,java,后端,数据库开发)