Mybatis 日志(Log4j2)

之前我们介绍了使用JDK Log、Apache Commons Logging打印Mybatis运行时的日志;本篇我们介绍使用Log4j2打印Mybatis运行时的日志。

如何您对Mybatis中使用JDK Log、Apache Commons Logging打印Mybatis运行时的日志不太了解,可以参考:

Mybatis 日志(JDK Log)icon-default.png?t=N7T8https://blog.csdn.net/m1729339749/article/details/132565362Mybatis 日志(Apache Commons Logging)icon-default.png?t=N7T8https://blog.csdn.net/m1729339749/article/details/133266537

一、添加依赖


    org.mybatis
    mybatis
    3.4.5


    mysql
    mysql-connector-java
    5.1.49


    org.apache.logging.log4j
    log4j-api
    2.20.0


    org.apache.logging.log4j
    log4j-core
    2.20.0

二、配置Mybatis

在mybatis-config.xml文件中配置logImpl




    
        
    

    
        
            
            
                
                
                
                
            
        
    

在配置文件中,我们配置了logImpl,值配置成了LOG4J2,代表的是使用Log4j2提供的日志系统

三、Log4j2日志配置

1、log4j2.component.properties

在resources目录下新建log4j2.component.properties配置文件

log4j.configurationFile=log4j2.properties

log4j.configurationFile用于指定log4j2的配置文件

2、log4j2.properties

在resources目录下新建log4j2.properties配置文件

status = ERROR

logger.action.name = cn.horse.demo.UserInfoMapper
logger.action.level = debug

log4j2.properties配置文件中配置了日志的级别

四、启动程序

1、准备数据

-- 如果数据库不存在则创建数据库
CREATE DATABASE IF NOT EXISTS demo DEFAULT CHARSET utf8;
-- 切换数据库
USE demo;
-- 创建用户表
CREATE TABLE IF NOT EXISTS T_USER(
  ID INT PRIMARY KEY,
  USERNAME VARCHAR(32) NOT NULL,
  AGE INT NOT NULL
);
-- 插入用户数据
INSERT INTO T_USER(ID, USERNAME, AGE)
VALUES(1, '张三', 20),(2, '李四', 22),(3, '王五', 24);

2、StatementUtils类

在cn.horse.demo下新建StatementUtils类

StatementUtils类:

package cn.horse.demo;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;
import java.util.List;
import java.util.Objects;

public abstract class StatementUtils {

    public static void find(String statement, Object parameter) {
        // 读取mybatis配置文件
        InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("mybatis-config.xml");
        // 根据配置创建SqlSession工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
                .build(inputStream);

        SqlSession sqlSession = null;
        try {
            // 创建SqlSession
            sqlSession = sqlSessionFactory.openSession();
            // 查询用户列表
            List userInfoList = sqlSession.selectList(statement, parameter);
            for (UserInfo userInfo: userInfoList) {
                System.out.println(userInfo);
            }
        } finally {
            // 关闭会话
            if(Objects.nonNull(sqlSession)) {
                sqlSession.close();
            }
        }
    }
}

3、UserInfo类

在cn.horse.demo下新建UserInfo类

UserInfo类:

package cn.horse.demo;

public class UserInfo {

    private Integer id;
    private String name;
    private Integer age;

    @Override
    public String toString() {
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append('{');
        stringBuilder.append("id: " + this.id);
        stringBuilder.append(", ");
        stringBuilder.append("name: " + this.name);
        stringBuilder.append(", ");
        stringBuilder.append("age: " + this.age);
        stringBuilder.append('}');
        return stringBuilder.toString();
    }
}

4、UserInfoMapper配置

在resources下新建demo目录,在目录下新建UserInfoMapper.xml文件





    

在mybatis-config.xml文件中引入UserInfoMapper.xml配置文件


    

5、启动程序

package cn.horse.demo;

public class Main {
    public static void main(String[] args) {
        System.setProperty("java.util.logging.config.class", "cn.horse.demo.JdkLogConfig");
        StatementUtils.find("cn.horse.demo.UserInfoMapper.findByAge", 21);
    }
}

执行的结果如下:

你可能感兴趣的:(Mybatis,mybatis,java)