wordpress 美化网站,软件下载官网源码,58同城本地网页版,湖南网站建设公司 要上磐石网络1. 使用 JUnit 进行单元测试
JUnit 是 Java 中非常流行的单元测试框架#xff0c;MyBatis 与 JUnit 可以很好地结合#xff0c;来测试持久层代码的正确性。
1.1 添加 JUnit 依赖
在使用 JUnit 之前#xff0c;需要在 pom.xml 中引入 JUnit 依赖。
dependencyMyBatis 与 JUnit 可以很好地结合来测试持久层代码的正确性。
1.1 添加 JUnit 依赖
在使用 JUnit 之前需要在 pom.xml 中引入 JUnit 依赖。
dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13.2/versionscopetest/scope
/dependency1.2 单元测试基本结构
假设我们要测试 UserMapper 中的 getUserById 方法测试代码如下
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;import java.io.InputStream;public class UserMapperTest {private SqlSessionFactory sqlSessionFactory;// 在测试开始前初始化 SqlSessionFactoryBeforepublic void setup() throws Exception {String resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);}// 测试获取用户的方法Testpublic void testGetUserById() {try (SqlSession session sqlSessionFactory.openSession()) {UserMapper mapper session.getMapper(UserMapper.class);User user mapper.getUserById(1);// 断言用户不为空Assert.assertNotNull(用户不存在, user);// 断言用户名是否正确Assert.assertEquals(用户名不匹配, Alice, user.getName());}}
}1.3 运行测试
每个 Test 注解的方法代表一个测试用例。使用 Before 注解的方法会在每个测试方法执行前运行常用于初始化。使用 Assert 方法来验证测试结果例如 Assert.assertNotNull() 检查对象是否为空Assert.assertEquals() 检查预期结果是否与实际结果一致。
通过运行 JUnit 测试你可以快速验证 MyBatis Mapper 的 SQL 执行是否正确。 2. 使用 JULJava Util Logging日志系统
Java Util Logging (JUL) 是 Java 内置的日志系统。MyBatis 默认使用 JUL 作为日志输出工具你可以通过配置来控制日志输出级别与格式。
2.1 配置 MyBatis 日志级别
MyBatis 可以输出执行的 SQL 语句、参数及结果等信息。首先你需要在 mybatis-config.xml 中配置日志级别。
configurationsettings!-- 开启日志输出 --setting namelogImpl valueJUL//settings
/configurationlogImpl 属性指定日志实现这里设置为 JUL表示使用 Java 自带的日志系统。
2.2 配置日志属性文件
在项目的 resources 目录下创建 logging.properties 文件配置日志输出格式和级别。
logging.properties 示例
handlers java.util.logging.ConsoleHandler# 设置根日志级别
.level INFO# 控制台日志级别和格式
java.util.logging.ConsoleHandler.level INFO
java.util.logging.ConsoleHandler.formatter java.util.logging.SimpleFormatter# MyBatis 日志级别
org.apache.ibatis.level FINE.level设置根日志的默认级别这里设为 INFO表示输出普通信息及更高级别的日志。org.apache.ibatis.level将 MyBatis 的日志级别设置为 FINE输出更详细的 SQL 日志。
2.3 常见日志级别
SEVERE严重错误可能导致程序崩溃的错误。WARNING警告信息潜在问题。INFO普通信息程序正常运行的相关消息。CONFIG配置信息程序初始化时的信息。FINE、FINER、FINEST调试信息显示程序细节日志级别递增。
2.4 运行时日志输出
通过上面的配置当你运行 MyBatis 程序时日志会输出到控制台并显示执行的 SQL 语句以及执行时间等。
示例日志输出
INFO: PooledDataSource forcefully closed/removed all connections.
FINE: Preparing: SELECT * FROM users WHERE id ?
FINE: Parameters: 1(Integer)
FINE: Total: 1日志中会显示 SQL 语句的准备状态、绑定的参数以及查询返回的记录数。
3. 使用 Properties 配置文件
Properties 文件是 Java 项目中常用的配置文件格式用于配置一些可调整的参数如数据库连接信息、日志级别等。在 MyBatis 中properties 文件也可以用于配置日志系统。
3.1 配置文件示例
创建一个名为 application.properties 的文件内容如下
# 数据库配置
db.urljdbc:mysql://localhost:3306/mydb
db.usernameroot
db.password123456# 日志配置
log.levelINFO然后在 Java 代码中加载这个配置文件
import java.io.InputStream;
import java.util.Properties;public class ConfigLoader {public static Properties loadProperties(String fileName) {Properties properties new Properties();try (InputStream input ConfigLoader.class.getClassLoader().getResourceAsStream(fileName)) {properties.load(input);} catch (Exception e) {e.printStackTrace();}return properties;}
}通过 loadProperties 方法可以将配置文件加载到内存中在程序中使用时可以动态获取这些配置。 4. 编写日志配置文件
为了使用 Java 内置的日志系统 JUL你可以编写一个 logging.properties 文件配置日志的输出格式、级别、输出位置等。这个配置文件通常放在 resources 目录下。
4.1 logging.properties 文件内容示例
# 使用 ConsoleHandler 输出日志到控制台
handlers java.util.logging.ConsoleHandler# 全局日志级别
.level INFO# 控制台日志处理器的级别和格式
java.util.logging.ConsoleHandler.level INFO
java.util.logging.ConsoleHandler.formatter java.util.logging.SimpleFormatter# MyBatis 日志配置
org.apache.ibatis.level FINEhandlers定义日志输出的处理器这里我们使用 ConsoleHandler 将日志输出到控制台。.level定义默认的日志级别INFO 表示输出一般信息。org.apache.ibatis.level为 MyBatis 特定包设置日志级别为 FINE显示更详细的 SQL 执行信息。
4.2 使用 logging.properties
在应用启动时你需要将 logging.properties 文件加载到日志系统中。可以通过以下方式加载
import java.util.logging.LogManager;public class LogConfig {static {try {LogManager.getLogManager().readConfiguration(LogConfig.class.getClassLoader().getResourceAsStream(logging.properties));} catch (Exception e) {e.printStackTrace();}}
}将此类放置在应用启动类中它会自动读取日志配置文件。 5. 使用 Lombok 快速开启日志
Lombok 提供了一些注解来自动生成日志记录器从而简化日志功能的使用。在 MyBatis 项目中可以使用 Lombok 提供的注解快速开启日志记录。
5.1 添加 Lombok 依赖
在 pom.xml 文件中添加 Lombok 依赖
dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.24/versionscopeprovided/scope
/dependency5.2 使用 Lombok 的日志注解
Lombok 提供了多种日志注解常用的有
Slf4j: 使用 SLF4J 日志框架Log: 使用 JUL 日志框架Log4j: 使用 Log4j 日志框架
在这里我们使用 Log 注解来使用 Java 自带的 JUL 日志系统
import lombok.extern.java.Log;Log
public class MyService {public void performAction() {log.info(Performing some action...);}
}Log 自动生成了一个 log 对象你可以直接使用 log.info()、log.warning() 等方法记录日志。这样做的好处是不需要手动创建日志记录器对象Lombok 会自动帮你生成。 6. MyBatis 日志系统
MyBatis 提供了内置的日志系统可以输出 SQL 语句的执行情况、参数绑定、返回结果等信息。MyBatis 支持多种日志框架如 JUL、Log4j、SLF4J 等。你可以根据项目需要选择合适的日志框架。
6.1 配置 MyBatis 日志系统
MyBatis 默认支持多种日志实现方式你可以通过 mybatis-config.xml 文件指定使用哪种日志系统。
configurationsettings!-- 配置 MyBatis 使用 JUL 作为日志框架 --setting namelogImpl valueJUL//settings
/configuration6.2 查看 SQL 日志
在启用了 MyBatis 日志系统后每当执行 SQL 语句时控制台上会输出相关的日志信息。示例日志输出如下
FINE: Preparing: SELECT * FROM users WHERE id ?
FINE: Parameters: 1(Integer)
FINE: Total: 1Preparing显示即将执行的 SQL 语句。Parameters显示 SQL 语句的参数绑定信息。Total显示查询返回的结果数。
6.3 使用 Log4j 或 SLF4J 作为日志系统
MyBatis 也支持其他日志系统比如 Log4j 或 SLF4J。如果你想使用 Log4j首先需要添加依赖
dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version
/dependency然后修改 mybatis-config.xml 配置文件设置 logImpl 为 LOG4J
configurationsettings!-- 使用 Log4j 作为日志系统 --setting namelogImpl valueLOG4J//settings
/configuration总结
JUnit 单元测试通过 JUnit 进行单元测试可以确保 MyBatis 的持久层代码正常工作Before 和 Test 是最常用的注解Assert 方法用于验证测试结果。JUL 日志系统MyBatis 支持 Java 自带的日志系统 (JUL)你可以通过 logging.properties 文件配置日志的级别、格式和输出位置。Properties 文件可以通过 application.properties 文件配置数据库连接信息和日志级别并通过 Java 代码加载这些配置。日志配置文件logging.properties 文件用于配置 JUL 日志系统可以控制日志的输出级别、格式等。Lombok 日志注解使用 Lombok 的 Log、Slf4j 等注解可以快速开启日志功能简化日志代码的书写。MyBatis 日志系统MyBatis 支持多种日志框架通过 mybatis-config.xml 可以指定日志实现MyBatis 的日志系统会输出 SQL 的执行情况方便调试。