10|第十课:MyBatis整合Log4j以及延迟加载

一、历史回顾

(一)、日志

SLF4J ---> Apache Commons Loggin ---> Log4j 2 ---> Log4j ---> JDK logging

二、Log4j以及延迟加载

(一)、Log4j

1、jar包:从下载MyBatis软件包里就有(在mybatis-3.5.0的lib目录)。

2、开启日志:在conf.xml文件中

日志开启

如果这里的value不指定,默认按照以下顺序寻找日志:SLF4J ---> Apache Commons Loggin ---> Log4j 2 ---> Log4j ---> JDK logging

3、编写配置日志输出文件(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

注:日志级别---DEBUG也就是说只显示指定级别及以上的。

建议:在开发时,设置成DEBUG,在运行时,设置成INFO 

(二)、延迟加载

1、介绍:

查询关联:一对一、一对多、多对一、多对多

2、一对一

例:

一对多:城市 --- 人

如果不采取延迟加载(立即加载),查询时会将一和多都查询,城市、人表中的所有人都会查询出来。但是有的时候,我们只想查询一,不想查询多。这里却全都查询出来了。这样的只查询一,不查询多的操作叫延迟加载。

具体操作:

(1)、延迟加载:需要配置conf.xml

配置信息

例:

conf.xml配置:

conf.xml配置

personMapper.xml配置:

personMapper.xml配置

新建并cardMapper.xml配置:

cardMapper.xml配置

personMapper接口:

personMapper接口

测试类:

测试类

通过例子debug发现,如果程序只需要person,则只向数据库发送了查询person的SQL;当我们后续需要用到card信息的时候,再第二次发送查询学生证SQL。

如果增加了mapper.xml,要修改conf.xml配置文件(将新增的mapper.xml加载进去)

3、一对多:和一对一的延迟加载配置相同

延迟加载的步骤,先查city

1、开启延迟加载:conf.xml配置settings

2、配置mapper.xml:配置cityMapper.xml和personMapper.xml

配置cityMapper.xml

即:查询person的sql通过select指定,并且通过column指定外键

配置 personMapper.xml

根据cityId查询city,这个cityId通过外键传入。

例:

conf.xml配置:配置settings和cityMapper.xml配置

配置cityMapper.xml:

配置cityMapper.xml

配置personMapper.xml:

配置personMapper.xml

cityMapper接口:

cityMapper接口

测试类:

测试类

你可能感兴趣的:(10|第十课:MyBatis整合Log4j以及延迟加载)