微服务常用组件封装项目过程详细介绍总述(四)---基于springboot的mybatis组件开发

本文详细介绍了如何在Spring Boot项目中封装Mybatis组件,包括自定义方法、SQL运行日志记录,以及利用Druid的Filter-Chain机制实现SQL拦截。通过集成FilterEventAdapter配置日志过滤器,并利用MyBatis-Plus的抽象方法和SqlInjector实现自定义方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:综述:

本节在前几节项目结构的基础上增加一个db组件的封装,主要是基于mybatis-plus,增加几个自定义的方法,介绍mybatis-plus中如何自定义基础方法,同时增加SQL运行日志。

二:基础知识简述:

        1.模块创建过程

        1> 创建如图模块

 修改POM文件为如下(依赖中新增的三方包需要在immortal-maqiao-depencies中增加版本管理):

​
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>immortal-maqiao-core</artifactId>
        <groupId>immortal-maqiao</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>immortal-maqiao-core-mybatis</artifactId>
    <dependencies>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-context</artifactId>
        </dependency>
    </dependencies>
</project>

​

2.增加props属性类(不是必须),用于获取组件中需要的属性信息,例如本模块需要根据配置判断是否需要打印sql信息,因此增加一个sql属性用来配置,如下图:

@Getter
@Setter
@RefreshScope
@ConfigurationProperties("mq.immortal.mybatis")
public class ImmortalMyBatisProps {

    //是否打印
    private boolean sql = true;
}

2>通过集成FilterEventAdapter配置日志过滤器 

 FilterEventAdapter是Druid中的一个拦截过滤器,这里不对他进行详细解释网上有很多的源码解析,这里只做使用说明:

Druid提供的Filter-Chain机制,可通过继承FilterEventAdapter把自定义的过滤器增加到原有执行链中,从而实现自定义sql拦截。

可以在SQL执行前 执行后等各种状态进行拦截,我们只拦截他statement在关闭时进行sql打印。

​
@Slf4j
@RequiredArgsConstructor
public class SqlLogFilter extends FilterEventAdapter {

    private static final SQLUtils.FormatOption FORMAT_OPTION = new SQLUtils.FormatOption(false, false);

    private final MqImmortalBybatisProps mqImmortalBybatisProps;


    @Override
    protected void statementExecuteBefore(StatementProxy statement, String sql) {
        statement.setLastExecuteStartNano();
    }

    @Override
    protected void statementExecuteBatchBefore(StatementProxy statement) {
        statement.setLastExecuteStartNano();
    }

    @Override
    protected void statementExecuteUpdateBefore(StatementProxy statement, String sql) {
        statement.setLastExecuteStartNano();
    }

    @Override
    protected void statementExecuteQueryBefore(StatementProxy st
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值