8、MyBatis整合Log4j和延迟加载

日志:Log4j

1.配置jar包

Log4j:log4j.jar(在mybatis.zip中lib)

2.开启日志:

//在config.xml
<settings>
   <!-- 开启日志,并指定使用的具体日志 -->
   <setting name="logImpl" value="LOG4J"/>
</settings>

如果不指定,mybatis就会根据以下顺序寻找日志

SLF4J/Apache Commons Logging/Log4j 2/Log4j/JDK logging

3.编写配置日志输出文件

日志级别(从低到高):
DEBUG、INFO、WARN、ERROR

打印时不打印低于自身级别的,即使用DEBUG则全打印,使用ERROR则ERROR
建议:在开发时使用DEBUG,在运行时使用INFO以上

//log4j.properties
log4j.rootLogger=DEBUG,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

可以通过日志信息,详细的阅读mybatis执行情况(观察mybatis实际执行的SQL语句以及SQL中的参数和返回结果)

延迟加载

一对一、一对多、多对一、多对多
一对多:班级–学生
如果不采用延迟加载(立即加载),查询时会将一和多都查询,班级、班级中所有的学生。
那么当我暂时只需要班级信息时,如果班级的学生很多,我就需要等很久

mybatis中使用延迟加载,需要先配置:

//config.xml中需要配置settings和mappers
<settings>
   <!-- 开启延迟加载 -->
   <setting name="lazyLoadingEnabled" value="true"/>
   <!-- 关闭立即加载 -->
   <setting name="aggressiveLazyLoading" value="false"/>
</settings>
<mappers>
	<!-- 加载映射文件 -->
	<mapper resource="org/lanqiao/mapper/personCardMapper.xml" />
</mappers>
//personMapper.xml
<!-- 一对一和延迟加载 -->
<select id="queryPersonByIdWithOneToOneAndLazyLoad" parameterType="int" resultMap="Person_PersonCard_lazyLoad">
	select * from person 
</select>

<resultMap type="Person" id="Person_PersonCard_lazyLoad">
    <!-- 分为主键id和非主键result -->
    <id property="id" column="id" />
    <result property="name" column="name" />
    <result property="age" column="age" />
    <!-- jdbcType的值要大写 -->
    <result property="sex" column="sex" javaType="boolean" jdbcType="INTEGER" />
    <!-- 一对一时,对象成员使用association映射 -->
    <!-- 采用延迟加载:在查询学生是,并不立即加载学生证信息 -->
    <association property="personCard" javaType="PersonCard" select="org.lanqiao.mapper.PersonCardMapper.queryCardById" column="cardId">
       <!-- <id property="cardId" column="cardId" />
       <result property="cardInfo" column="cardInfo" /> -->
    </association>
</resultMap>

//personCardMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  
<!-- namespace:该mapper.xml映射文件的唯一标识 -->
<mapper namespace="org.lanqiao.mapper.PersonCardMapper">
    <!-- 查询学生证信息 -->
    <select id="queryCardById" parameterType="int" resultType="PersonCard">
       select * from personCard where cardId = #{cardId}
    </select>
</mapper>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis是一个开源的持久层框架,它可以帮助开发者简化数据库操作的编写。而Log4j是一个Java日志框架,可以用于记录应用程序的日志信息。在MyBatis中使用Log4j可以方便地记录SQL语句的执行情况以及其他相关信息。 要在MyBatis中使用Log4j,首先需要在项目中引入Log4j的相关依赖。可以通过在项目的pom.xml文件中添加以下依赖来引入Log4j: ```xml <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> ``` 引入依赖后,需要在项目的配置文件中配置Log4j的相关信息。可以创建一个名为log4j.properties的文件,并在其中配置日志输出的格式、级别等信息。以下是一个简单的log4j.properties配置示例: ```properties # 设置日志输出级别为DEBUG 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 [%t] %-5p %c - %m%n ``` 配置完成后,可以在MyBatis的配置文件中指定使用Log4j作为日志输出工具。在mybatis-config.xml文件中添加以下配置: ```xml <configuration> <!-- 其他配置 --> <!-- 配置使用Log4j作为日志输出工具 --> <settings> <setting name="logImpl" value="LOG4J"/> </settings> <!-- 其他配置</configuration> ``` 配置完成后,MyBatis会将SQL语句的执行情况以及其他相关信息输出到Log4j日志文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值