使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让本就复杂的 SQL 语句更加混乱不堪。 因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。
mybatis全局配置文件 和 管理SQL的mapper文件
日志相关发展
JDK1.4之前 没有任何日志框架
System.out.println("");
try catch
调试信息等都部署到线上了
信息只能输出到控制台 控制台信息量有限
跟踪的变量 调试的信息
1、设置日志级别 error级别 按照包或类输出 2、将日志输出到文件中 能不能按照日期或文件大小进行归档 记录日志的同时发送邮件给开发人员 3、加入了自定义的格式 让日志更美观 4、异步 性能
将日志开源 引起很大的反响 log4j (Apache 收入旗下)
JDK发现后 开发了JUL java.util.logging Jboos-logging ....
开发 slf4j 日志门面 集成其他框架 不实现日志功能 达到日志大统一 让所有的日志统一成一个出口
JDK开发了 JCL java common logging
基于log4j 开发了 logback (性能提高10倍)
apache log4j 开发出来一个log4j2
SLF4J 门面
log4j2 、 logback 日志实现(Springboot 默认 logback) 出自一个作者
门面层选取 SLF4J 日志实现使用 Logback
logback 中文文档 logbackcn.gitbook.io/logback/02-…
怎么在mybatis中使用logback
对应maven
<!-- 日志实现 -->
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.5</version>
<scope>test</scope>
</dependency>
<!-- 门面 -->
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.6</version>
</dependency>
</dependencies>
上面的版本需要JDK19 故采用降版本防止报错
<!-- <!– https://mvnrepository.com/artifact/ch.qos.logback/logback-classic –>-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
<scope>test</scope>
</dependency>
<!-- <!– https://mvnrepository.com/artifact/org.slf4j/slf4j-api –>-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.36</version>
</dependency>
</dependencies>
Mybatis 底层继承了日志功能 当加入对应的java包会自动介入调试 加入依赖后 调试信息 slf4j自动介入的
默认是Debug级别
import org.slf4j.Logger;//*
import org.slf4j.LoggerFactory;//*
//import org.slf4j.Logger;
import java.io.IOException;
import java.io.InputStream;
public class MyTest {
Logger LOGGER = LoggerFactory.getLogger(this.getClass());
@Test
public void test02(){
LOGGER.trace("跟踪级别trace");
LOGGER.debug("跟踪级别debug");
LOGGER.info("跟踪级别info");
LOGGER.warn("跟踪级别warn");
LOGGER.error("跟踪级别error");
}
MyBatis使用日志
1、加入依赖
<!-- <!– https://mvnrepository.com/artifact/ch.qos.logback/logback-classic –>-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
<scope>test</scope>
</dependency>
<!-- <!– https://mvnrepository.com/artifact/org.slf4j/slf4j-api –>-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.36</version>
</dependency>
</dependencies>
2、**创建配置文件 logback.xml (可忽略) **
<configuration>
<!--追加器 日志以那种方式进行传输 name 取个名字 class 不同的实现类 会输出到不同的地方-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 格式 -->
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{136} - %msg%n</pattern>
</encoder>
</appender>
<!--根据包或类 控制更细腻的日志级别-->
<logger name="com.kdy.mapper.EmpMapper" level="trace"> </logger>
<!-- 控制所有的-->
<root level="error">
<!-- 引用 将当前日志级别输出到那个追加器上面 -->
<appender-ref ref="STDOUT" />
</root>
</configuration>
3、使用
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Logger LOGGER = LoggerFactory.getLogger(this.getClass());
LOGGER.trace("跟踪级别trace");
LOGGER.debug("跟踪级别debug");
LOGGER.info("跟踪级别info");
LOGGER.warn("跟踪级别warn");
LOGGER.error("跟踪级别error");