没有合适的资源?快使用搜索试试~ 我知道了~
首页mybatis拦截器实现通用权限字段添加的方法
mybatis拦截器实现通用权限字段添加的方法

主要给大家介绍了关于mybatis拦截器实现通用权限字段添加的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
资源详情
资源评论
资源推荐

mybatis拦截器实现通用权限字段添加的方法拦截器实现通用权限字段添加的方法
主要给大家介绍了关于mybatis拦截器实现通用权限字段添加的相关资料,文中通过示例代码介绍的非常详细,对大
家学习或者使用mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
实现效果实现效果
日常sql中直接使用权限字段实现权限内数据筛选,无需入参,直接使用,使用形式为:
select * from crh_snp.channelinfo where short_code in (${commonEnBranchNo})
注意事项说明注意事项说明
1、添加插件若使用xml形式mybatis可在配置文件中plugins标签中添加,本项目实际使用的为注解形式mybatis,需要通过
SqlSessionFactoryBean代码方式添加或者SqlSessionFactoryBean的xml配置形式,代码在jar包中无法操作,只能使用xml配置形
式,故需要覆盖SqlSessionFactoryBean配置
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations">
<list>
<value>classpath*:xmlmapper/*.xml</value>
<value>classpath*:resources/xmlmapper/*.xml</value>
</list>
</property>
<property name="plugins">
<array>
<bean class="com.cairh.xpe.snp.backend.interceptor.MybatisInterceptor"/>
</array>
</property>
</bean>
2、jdbc的jar包中配置了sqlSessionFactory,本项目中配置进行覆盖,注意spring中同名类后加载的会覆盖先加载的类,需要保证本
项目配置的类后加载。spring配置文件扫描会先加载本工程项目bean,可通过新增额外的配置文件放在原配置文件后实现后加载,
如
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:spring-beans.xml
classpath*:spring-person.xml
</param-value>
</context-param>
3、注意添加的参数需要${}形式使用,#{}会经过预编译获取到的sql参数为问号,无法直接替换
拦截器实现类拦截器实现类
@Intercepts({
@Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})
})
public class MybatisInterceptor implements Interceptor {
// private Logger logger = LoggerFactory.getLogger(getClass());
@Override
public Object intercept(Invocation invocation) throws Throwable {
if (invocation.getTarget() instanceof Executor && invocation.getArgs().length==4) {
String sql = getSqlByInvocation(invocation);
//将操作员可操作的渠道、用户id及营业部作通用字段放到sql中统一解析
if(sql.contains("commonEnShortCode")){
sql = addPremissionParam(sql);
resetSql2Invocation(invocation, sql);
}
}
return invocation.proceed();
}
@Override
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}
@Override
public void setProperties(Properties properties) {}


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论1