一、历史回顾
(一)、日志
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<INFO<WARN<ERROR。设置成DEBUG,4个都有。如果设置成INFO,则只有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.xmlcityMapper接口:
cityMapper接口测试类:
测试类
网友评论