请教一下 Mybatis Mapper SQL - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
hejw19970413
V2EX    程序员

请教一下 Mybatis Mapper SQL

  • /li>  
  •   hejw19970413 2024-11-25 15:24:50 +08:00 2136 次点击
    这是一个创建于 365 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近小弟在公司的要求下把项目的 SQL 适配到其他数据库上。 之前没搞过 Java,听同事稍微的讲了一下。 经了解项目是 SQL 用 MyBatis ,现在项目下有好多的 Mapper.xml 的 SQL 模板文件。 请问大家这 Mapper 怎么能把生成出来的 SQL 打印出来。 有什么好的办法我想学习一下

    15 条回复    2024-11-26 10:55:03 +08:00
    liuzhedash
        1
    liuzhedash  
       2024-11-25 15:32:24 +08:00
    简单版:

    配置里面加
    mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    可以打印出 sql 模板和参数

    复杂版:
    https://github.com/p6spy/p6spy
    qq135449773
        2
    qq135449773  
       2024-11-25 15:32:33 +08:00
    设置 mapper package 的 log level 为 debug
    wymisgod
        3
    wymisgod  
       2024-11-25 15:39:09 +08:00
    看你们使用的什么日志实现。因为 Log4j 有安全漏洞,所以大概是三四年前之后,基本上都让换成 logback+slf4j 的日志打印方式了。
    这里又有分叉,一个是 logback 配置里没有配置日志打印 level 的,这个的话一般在 application.yml 或者 application.properties 里可以设置。
    另外一种是在 logback-spring.xml 里进行配置。这里又有分叉了,好多种可以修改打印日志级别的情况,说两个比较常规的,一个在该文件里找<appender>标签里包含 ch.qos.logback.core.ConsoleAppender 或者带 console 的,去看日志打印级别是否是 INFO ,修改为 DEBUG 即可。一个是<root>标签里的打印级别。
    还有一种情况就是 mybatis 配置的日志实现
    hejw19970413
        4
    hejw19970413  
    OP
       2024-11-25 15:54:21 +08:00
    其实我是想直接把 SQL 给弄出来,不想去执行,因为还有一个要求是写个文档,领导要看,我要是执行的来说,里面有好多的判断啥的,得处理好多得查询条件。
    @wymisgod
    @liuzhedash
    @qq135449773
    wymisgod
        5
    wymisgod  
       2024-11-25 16:19:57 +08:00
    @hejw19970413 初始开发人员不维护文档,现在想起来了要整,让你来维护,给领导说干不了。看这情况,估计 DDL 的上线应该也没有审核机制,早点跑
    pengtao2001
        6
    pengtao2001  
       2024-11-25 16:42:48 +08:00
    Akitora
        7
    Akitora  
       2024-11-25 16:47:03 +08:00 via Android
    环境变量设置 logging.level.xxx.mapper=DEBUG
    lpe234
        8
    lpe234  
       2024-11-25 18:55:18 +08:00
    soap0X
        9
    soap0X  
       2024-11-25 18:55:46 +08:00 via Android
    xml 里面不就是 sql ,除了参数条件
    billccn
        10
    billccn  
       2024-11-26 02:16:51 +08:00
    既然用了 Mybatis 估计不是纯粹运行简单 SQL 而是至少有一些动态 SQL ,你也不运行代码的情况下是无法自动打出所有可能的 SQL 的,否则就是解决了 halting problem ,要不你把 Mapper.xml 人工分析一下。
    xuanbg
        11
    xuanbg  
       2024-11-26 05:51:41 +08:00
    别想着打出完整的 SQL 语句。里面肯定有<if ...>xxx</if>之类的,条件不匹配就不会拼进 SQL 去执行,也就打不出来这部分查询条件。

    正确的做法还是学一下 xml 的写法,其实挺简单的。学会了再把 xml 翻译成 SQL 。
    LiaoMatt
        12
    LiaoMatt  
       364 天前
    写个 Mybatis 拦截器, 执行前打印 SQL
    hejw19970413
        13
    hejw19970413  
    OP
       364 天前
    @lpe234 这两个项目我试过了,解析不出来
    montaro2017
        14
    montaro2017  
       364 天前
    IDEA 有个 Mybatis Log Free 插件 https://plugins.jetbrains.com/plugin/17898-mybatis-log-free
    启用后可以查看到完整的 SQL
    montaro2017
        15
    montaro2017  
       364 天前
    @montaro2017 #14 要先开启 mybatis 的日志打印功能才有用
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3769 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:53 PVG 08:53 LAX 16:53 JFK 19:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86