1. MyBatis-Plus 控制台SQL打印配置
在开发过程中,实时查看执行的SQL语句对于调试和优化至关重要。MyBatis-Plus提供了灵活的日志配置方式,让我们可以方便地在控制台输出SQL语句及其参数。
1.1 配置文件设置
根据项目使用的配置文件类型,可以选择以下两种配置方式:
properties格式配置:
properties复制mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
yml格式配置:
yaml复制mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
注意:这种配置会将所有SQL语句打印到控制台,包括参数值。在生产环境中建议关闭或使用更安全的日志级别。
1.2 日志级别详解
除了直接输出到控制台,MyBatis还支持多种日志实现:
- SLF4J
- LOG4J
- LOG4J2
- JDK_LOGGING
- COMMONS_LOGGING
- STDOUT_LOGGING(我们上面使用的)
- NO_LOGGING
实际项目中,更推荐使用SLF4J配合Logback或Log4j2,可以通过日志级别控制输出粒度:
yaml复制logging:
level:
org.mybatis: DEBUG
org.apache.ibatis: DEBUG
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 批量插入操作优化
批量插入是数据库操作中常见的性能优化点,MyBatis通过foreach标签提供了优雅的实现方式。
2.1 基础批量插入实现
xml复制<insert id="insertList" parameterType="java.util.List">
insert into ncdp_app_group_rel
(group_id, app_id, sort)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.groupId}, #{item.appId}, #{item.sort})
</foreach>
</insert>
参数解析:
collection: 指定迭代的集合对象,对应Mapper接口中的参数名item: 集合中每个元素的别名index: 当前迭代的索引separator: 每次迭代后的分隔符
2.2 性能优化技巧
-
批次控制:虽然MyBatis支持一次性插入大量数据,但建议每批控制在500-1000条左右,避免SQL语句过长或数据库连接超时。
-
rewriteBatchedStatements:对于MySQL,可以在JDBC连
