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>
发布了25 篇原创文章 · 获赞 0 · 访问量 415
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览