【代码备忘录】如何在MybatisPlus中将SQL日志输出到控制台?

Mybatis Plus YYDS!

鸣谢同事Dr.L在该内容对我的指点!

祖传絮叨

当咱们使用MybatisPlus进行开发时,日志输出对于调试以及性能监测非常重要。MybatisPlus默认使用Log4j进行日志输出,但是如果咱们的项目不使用Log4j,咱们可以通过配置log-impl: org.apache.ibatis.logging.stdout.StdOutImpl来将日志输出到控制台上。

改改就能抄的代码

首先,在application.yml或者application.properties中添加如下配置:

mybatis-plus:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath*:mapper/**/*.xml
  type-aliases-package: com.example.entity
  global-config:
    db-config:
      id-type: auto
    banner: false
    sql-parser-cache: false
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
复制代码

其中,log-impl指定了日志输出的实现类为org.apache.ibatis.logging.stdout.StdOutImpl,即控制台输出。在日志输出时,咱们可以看到如下输出信息:

2023-04-12 23:03:27.720  INFO 1126 --- [nio-8019-exec-1] c.b.p.controller.HeroController          : ==>  Preparing: SELECT * FROM hero WHERE id = ? 
2023-04-12 23:03:27.721  INFO 1126 --- [nio-8019-exec-1] c.b.p.controller.HeroController          : ==> Parameters: 1(Integer)
2023-04-12 23:03:27.724  INFO 1126 --- [nio-8019-exec-1] c.b.p.controller.HeroController          : <==      Total: 1
复制代码

可以看到,MybatisPlus将SQL语句和参数都输出到了控制台。

下面是一个完整的Controller示例代码,供参考:

@RestController
@RequestMapping("/hero")
public class HeroController {

  @Autowired
  private HeroService heroService;

  @GetMapping("/{id}")
  public Hero getById(@PathVariable Integer id) {
    return heroService.getById(id);
  }
}
复制代码

其中,HeroService中调用了MybatisPlus的getById方法:

@Service
public class HeroServiceImpl extends ServiceImpl<HeroMapper, Hero> implements HeroService {

  @Override
  public Hero getById(Serializable id) {
    log.info("getById - id = {}", id);
    return super.getById(id);
  }
}
复制代码

getById方法中,咱们加入了自定义的日志输出信息,以便日后调试。同时,咱们配置了log-impl为控制台输出,使得咱们可以方便地在控制台查看到SQL日志。

参考文献

- MybatisPlus官方文档:https://baomidou.com
复制代码

猜你喜欢

转载自juejin.im/post/7222210580320305211
今日推荐