我们在控制台看到的sql语句一般是 没有 自动把参数拼接进去的
所以有时候语句很长 参数很多的时候 手动替换 烦的一批
那现在我就试试 自动拼接参数

首先 引入 架包Log4jdbc-log4j2
Log4jdbc-log4j2是做什么的呢 
这个是一个基于jdbc层面的监听工具,可以监听对于数据库的主要操作,从而完美的查看到其中执行的操作。

<!--监听数据库操作-->
<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
    <version>1.16</version>
</dependency>
然后新增一个Log4jdbc-log4j2的配置文件
log4jdbc.log4j2.properties
其中的内容主要是
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
下面要去改一下数据库连接设置 要用 Log4jdbc-log4j2连接数据库才能监听操作语句
datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      ##原来的 driver-class-name: com.mysql.jdbc.Driver
      driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
      ##原来的 url: jdbc:mysql://0.0.0.0/exam?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=GMT%2b8&useSSL=false
      url: jdbc:log4jdbc:mysql://0.0.0.0/exam?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=GMT%2b8&useSSL=false
      username: 用户名
      password: 密码
配置完成了 现在运行项目试试吧 
控制台已经有东西了

jpa 打印sql 日志 mysql spring jpa 打印sql 参数_mysql

大概有输出的有 jdbc.sqlonly  jdbc.sqltiming  jdbc.resultset jdbc.resultsettable等
这些事什么意思呢 可以参考一下

jdbc.sqlonly		仅记录SQL。在准备好的语句中执行的SQL会自动显示出来,其绑定参数替换为该位置的绑定数据,从而大大提高了可读性。
jdbc.sqltiming		执行后记录SQL,包括有关SQL执行所需时间的计时统计信息。
jdbc.audit			记录除结果集外的所有JDBC调用。这是非常大量的输出,通常不需要,除非找到特定的JDBC问题。
jdbc.resultset		由于记录了对ResultSet对象的所有调用,因此更加庞大。
jdbc.resultsettable	将jdbc结果记录为表格。级别调试将在结果集中填充未读的值。
jdbc.connection		记录连接打开和关闭事件以及转储所有打开的连接号。这对于解决连接泄漏问题非常有用。
不需要的日志输出 是可以 通过日志配置文件 logback配置去掉的 
主要配置看到  控制台日志打印设置

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>Spring Boot</contextName>
    <property name="log.path" value="/Users/myheart/Documents/logs/exam" />
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>ERROR</level>
         </filter>-->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--输出到文件-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/logs/%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <!--<!–<maxHistory>30</maxHistory>–>  日志数-->
        <!--<!–<totalSizeCap>1GB</totalSizeCap>–> 日志文件上限大小-->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    
	<!--控制台日志打印设置-->
	
    <!--设置为OFF不显示; 留下需要显示的并设置级别-->
    <logger name="jdbc.connection" level="OFF"/>
    <logger name="jdbc.resultset" level="OFF"/>
    <logger name="jdbc.resultsettable" level="OFF"/>
    <logger name="jdbc.audit" level="OFF"/>
    <logger name="jdbc.sqltiming" level="OFF"/>
    <logger name="jdbc.sqlonly" level="INFO"/>

    <root level="info">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </root>

    <!-- logback为java中的包 -->
    <logger name="net.ardour"/>
    <!--这里配日志 -->
    <logger name="net.ardour" level="INFO" additivity="false">
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </logger>
</configuration>

好了 差不多就是这些了 自己赶紧试试去看看 最后的效果吧
如果有什么不懂 或不对的地方请提问或指出