mybatis-plus 逻辑删除配置和日志配置

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      id-type: assign_id  # 显式配置主键生成策略
      select-strategy: not_empty
      update-strategy: not_null
      logic-delete-field: deleteFlag  # 显式配置逻辑删除字段名
      logic-delete-value: 1
      logic-not-delete-value: 0

mport com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;

@TableName("xxxx_config")  // 指定表名
public class xxxConfig  {

    @TableId(value = "id", type = IdType.ASSIGN_ID)  // 主键生成策略
    @JsonSerialize(using = ToStringSerializer.class)  // 解决 Long 类型精度丢失问题
    private Long id;
    @ApiModelProperty(value = "逻辑删除")
    @TableField("delete_flag")
    @TableLogic  // 逻辑删除注解
    private Boolean deleteFlag;

    // 省略 getter 和 setter 方法
}

log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 是 MyBatis(或 MyBatis-Plus)框架中用于配置日志实现的选项。它的作用是指定 MyBatis 使用哪种日志实现来输出 SQL 语句、参数、执行结果等调试信息。


1. 作用

  • 输出 SQL 日志:配置 log-impl 后,MyBatis 会将执行的 SQL 语句、参数、返回结果等信息输出到日志中,方便开发者调试和排查问题。

  • 日志实现org.apache.ibatis.logging.stdout.StdOutImpl 是 MyBatis 提供的一种简单的日志实现,它会将日志直接输出到控制台(标准输出)。


2. 配置方式

在你的配置文件(如 application.yml 或 application.properties)中,可以通过以下方式配置:

YAML 配置

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

Properties 配置

properties

复制

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

3. 日志输出内容

启用 StdOutImpl 后,MyBatis 会输出以下信息:

  • SQL 语句:执行的 SQL 语句。

  • 参数:SQL 语句中的参数值。

  • 返回结果:SQL 执行后的结果(如查询结果、更新影响的行数等)。

  • 执行时间:SQL 的执行时间(如果启用了性能分析插件)。

示例输出:

sql

复制

==>  Preparing: SELECT * FROM user WHERE id = ?
==> Parameters: 1(Long)
<==      Total: 1

4. 其他日志实现

除了 StdOutImpl,MyBatis 还支持多种日志实现,可以根据项目需求选择合适的日志框架。常见的日志实现包括:

日志实现类 说明
org.apache.ibatis.logging.stdout.StdOutImpl 将日志输出到控制台(标准输出),适合本地开发和调试。
org.apache.ibatis.logging.log4j.Log4jImpl 使用 Log4j 输出日志,适合需要将日志输出到文件或其他目标的场景。
org.apache.ibatis.logging.log4j2.Log4j2Impl 使用 Log4j2 输出日志,Log4j2 是 Log4j 的升级版,性能更好。
org.apache.ibatis.logging.slf4j.Slf4jImpl 使用 SLF4J 输出日志,SLF4J 是一个日志门面,可以适配多种日志实现(如 Logback)。
org.apache.ibatis.logging.nologging.NoLoggingImpl 不输出任何日志,适用于生产环境以减少日志输出。

5. 如何选择日志实现

  • 本地开发:建议使用 StdOutImpl,方便查看 SQL 日志。

  • 生产环境:建议使用 Slf4jImpl 或 Log4j2Impl,并结合日志框架(如 Logback)将日志输出到文件或其他存储中。

  • 性能要求高:推荐使用 Log4j2Impl,因为它的性能优于 Log4j。


6. 示例:使用 SLF4J + Logback

如果你希望在生产环境中使用 SLF4J + Logback 输出日志,可以按以下步骤配置:

配置文件

yaml

复制

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
Logback 配置文件(logback.xml

xml

复制


    
        logs/mybatis.log
        
            logs/mybatis.%d{yyyy-MM-dd}.log
            30
        
        
            %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
        
    

    
        
    

    
        
    

运行 HTML


7. 总结

  • log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 是将 MyBatis 日志输出到控制台的简单实现,适合本地开发和调试。

  • 在生产环境中,建议使用 Slf4jImpl 或 Log4j2Impl,并结合日志框架(如 Logback)将日志输出到文件或其他存储中。

  • 通过合理配置日志实现,可以方便地调试 SQL 语句,同时在生产环境中控制日志输出的粒度和目标。

你可能感兴趣的:(mybatis)