Mybatis知识文档
MyBatis 是一个轻量级的 Java 持久层框架,提供 SQL 映射功能,使开发者能够直接编写 SQL 语句,并避免手动操作结果集。配置 Log4j 以显示 SQL 日志,可以在程序运行过程中通过控制台输出 SQL 执行日志,便于调试和性能优化。
在 MyBatis 中,可以在项目的 src
目录下创建 log4j.properties
文件,并添加以下配置:
# 设置日志级别,DEBUG < INFO < WARN < ERROR < FATAL
log4j.rootLogger=debug, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
# 屏蔽其他框架的日志输出,只显示 MyBatis 的 SQL 语句
log4j.logger.org.apache=ERROR
log4j.logger.org.hibernate=ERROR
log4j.logger.org.springframework=ERROR
log4j.logger.org.mybatis=DEBUG
log4j.logger.org.apache.http=ERROR
log4j.logger.com.netflix=ERROR
在 pom.xml
中,引入 Log4j 依赖库:
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.17version>
dependency>
LIKE
关键字用于 SQL 查询中的模糊匹配,例如:
SELECT * FROM t_user WHERE username LIKE '%ao%' OR password LIKE '%123%'
在 MyBatis 中,使用预编译的 PreparedStatement 来防止 SQL 注入。直接使用带有 %
的字符串参数会导致问题,因为 MyBatis 会自动处理单引号。可以使用 SQL 的 CONCAT
函数来拼接 %
与参数值:
<select id="selectUsersByLikeMap" resultType="User">
select * from t_user where username like concat('%', #{username}, '%') or password like concat('%', #{password}, '%')
select>
在这个例子中,#{username}
和 #{password}
是 MyBatis 的参数占位符,它们会被实际的参数值替换,CONCAT
函数确保 %
符号正确地与参数结合,从而实现模糊查询。
下载地址
用户评论