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
复制代码