美文网首页
springboot mybaits-plus Sql 注入器

springboot mybaits-plus Sql 注入器

作者: 云大牛1024 | 来源:发表于2019-05-28 09:13 被阅读0次

1 写一个类继续 AbstractLogicMethod

public class LogicDeleteByWrapper extends AbstractLogicMethod {
 
    @Override
    public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
        String sql;
        MySqlMethod sqlMethod = MySqlMethod.LOGIC_DELETE_BY_WRAPPER;
        sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), sqlLogicSet(),
                sqlWhereEntityWrapper(tableInfo));
        SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
        return addUpdateMappedStatement(mapperClass, modelClass, sqlMethod.getMethod(), sqlSource);
    }
 
    public String sqlLogicSet(){
 
        String sql ="<trim prefix=\"SET\" suffixOverrides=\",\">\n" +
                "<if test=\"et.updateBy != null\">update_by=#{et.updateBy},</if>\n" +
                "<if test=\"et.updateTime != null\">update_time=#{et.updateTime},</if>\n" +
                "is_deleted = 1\n" +
                "</trim> ";
        return sql;
    }
}

写一个类继承baseMapper

     /**
     * 逻辑删除
     * @param entity
     * @param updateWrapper
     * @return
     */
    int logicDeleteByWrapper(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);

写一个枚举类

public enum  MySqlMethod {
 
 
    /**
     * 根据参数逻辑删除
     */
    LOGIC_DELETE_BY_WRAPPER("logicDeleteByWrapper", "根据ID 修改数据", "<script>\nUPDATE %s %s %s\n</script>"),
 
    /**
     * 根据id逻辑删除
     */
    LOGIC_DELETE_BY_ID("logicDeleteById", "根据ID 修改数据", "<script>\nUPDATE %s %s WHERE %s=#{%s}\n</script>");
 
    private final String method;
    private final String desc;
    private final String sql;
 
    MySqlMethod(String method, String desc, String sql) {
        this.method = method;
        this.desc = desc;
        this.sql = sql;
    }
 
    public String getMethod() {
        return method;
    }
 
    public String getDesc() {
        return desc;
    }
 
    public String getSql() {
        return sql;
    }
}

最后一步就是注入到bean

public class MyLogicSqlInjector extends AbstractSqlInjector {
 
 
    @Override
    public List<AbstractMethod> getMethodList() {
        return Stream.of(         
                new LogicDeleteByWrapper()
        ).collect(Collectors.toList());
    }
 
 
    @Override
    public void injectSqlRunner(Configuration configuration) {
        new SqlRunnerInjector().inject(configuration);
    }
}

@Configuration
@MapperScan("com.xxx.xxx.*.dao")
public class MybatisPlusConfig {
 
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
 
 
    @Bean
    public ISqlInjector sqlInjector() {
        return new MyLogicSqlInjector();
    }
 
    /**
     * SQL执行效率插件
     */
    @Bean
    @Profile({"dev","test"})// 设置 dev test 环境开启
    public PerformanceInterceptor performanceInterceptor() {
        return new PerformanceInterceptor();
    }
}

原博客地址 http://www.51csdn.cn/article/140.html

相关文章

  • springboot mybaits-plus Sql 注入器

    1 写一个类继续 AbstractLogicMethod 写一个类继承baseMapper 写一个枚举类 最后一步...

  • 09-ADO.NET进阶

    一、sql注入风险及解决方案 SQL注入是指在事先定义好的SQL语句中注入额外的SQL语句,从此来欺骗数据库服务器...

  • SQL 注入

    一.什么是SQL注入?SQL注入是一种将sql代码添加到输入参数中,传递到sql服务器解析并执行的一种攻击手法。 ...

  • WEB安全之SQL注入

    1) 如何理解sql注入 sql注入是一种将sql代码添加到输入参数中,传递到sql服务器解析并执行的一种攻击手法...

  • web常见漏洞的成因和修复

    1.SQL注入 漏洞描述:SQL 注入攻击( SQL Injection ),简称注入攻击、SQL 注入,主要用于...

  • 笔记:web漏洞

    SQL注入 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,...

  • 常用sql注入语句

    转载链接 渗透常用SQL注入语句大全(网上收集) 记一次通过fckeditor入侵提权拿服务器 常用sql注入语句

  • WEB安全之SQL注入

    什么是SQL注入? SQL注入是一种将SQL代码添加到输入参数中传递到SQL服务器解析并执行的一种攻击手法。案列解...

  • 谈谈sql注入之原理和防护(-)

    谈谈sql注入(二)谈谈sql注入(三)谈谈sql注入(四)所谓SQL注入,就是通过把SQL命令插入到Web表单提...

  • 9.4 SQL注入

    SQL注入 所谓SQL注入,就是通过把SQL命令插入到表单中或页面请求的查询字符串中,最终达到欺骗服务器执行恶意的...

网友评论

      本文标题:springboot mybaits-plus Sql 注入器

      本文链接:https://www.haomeiwen.com/subject/ywtrtctx.html