通用Mapper如何输出执行的SQL语句?

来源:3-15 编写用户微服务与内容微服务-1

夏J

2019-07-02

不知道为什么我用这个方法是查不到数据的想看一下输出的执行的sql也没法看,所以老师帮我找一下有关打印通用
mapper打印日志的方法,麻烦老师了

   this.userMapper.selectByPrimaryKey(id)

用这个方法倒可以

    @Autowired(required = false)
    private UserMapper userMapper;
    public List<User> findById(Integer id) {
        User user = new User();
        user.setId(id);
//        this.userMapper.selectByPrimaryKey(id)
        return this.userMapper.select(user);
    }
写回答

2回答

大目

2019-07-02

您好,很棒的问题哦!这其实是一个Mybatis基础问题。

要想看到SQL非常简单,只需要在application.yml添加如下内容即可:

logging:
  level:
    # 这样,这个包下的所有mapper都会打印出执行的SQL
    com.itmuch.usercenter.dao: debug

打印出来的日志如下:

2019-07-02 16:51:05.655 DEBUG 97433 --- [nio-8080-exec-4] c.i.u.d.u.UserMapper.selectByPrimaryKey  : ==>  Preparing: SELECT id,wx_id,wx_nickname,roles,avatar_url,create_time,update_time,bonus FROM user WHERE id = ? 
2019-07-02 16:51:05.656 DEBUG 97433 --- [nio-8080-exec-4] c.i.u.d.u.UserMapper.selectByPrimaryKey  : ==> Parameters: 1(Integer)
2019-07-02 16:51:05.658 DEBUG 97433 --- [nio-8080-exec-4] c.i.u.d.u.UserMapper.selectByPrimaryKey  : <==      Total: 1


0
2
夏J
是我配错了 logging: level: com.itmuch.userconter.dao.user: DEBUG 多谢老师
2019-07-02
共2条回复

大目

2019-07-02

对了,这个问题还可以拓展一下。对于IDEA,可以安装Mybatis Log Plugin,让日志的显示更加的人性化,从而提升调试、排错的效率。

截图演示:

68747470733a2f2f706c7567696e732e6a657462

最后,附上个人总结的所有IDEA的学习资源,详见:

https://github.com/eacdy/awesome-idea#114-mybatis-log-plugin

0
2
大目
回复
夏J
mybatis-plus功能上是比mybatis强大一些,但都是自己定义的注解。未来mybatis-plus不维护了的话,就会比较尴尬。 通用mapper是JPA注解,标准化的。即使未来通用mapper不维护了,自己基于标准注解做点改动也可以继续用。 ---- 以上我是一家之言,带有一定主观看法,看看就OK了,不用尽信,哈哈。
2019-07-02
共2条回复

Spring Cloud Alibaba微服务从入门到进阶

面向未来微服务:熟练掌握Spring Cloud Alibaba

3085 学习 · 1324 问题

查看课程