一、歷史回顧
(一)、日志
SLF4J ---> Apache Commons Loggin ---> Log4j 2 ---> Log4j ---> JDK logging
二、Log4j以及延遲加載
(一)、Log4j
1、jar包:從下載MyBatis軟件包里就有(在mybatis-3.5.0的lib目錄)。
2、開啟日志:在conf.xml文件中

如果這里的value不指定,默認(rèn)按照以下順序?qū)ふ胰罩荆篠LF4J ---> 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。設(shè)置成DEBUG,4個(gè)都有。如果設(shè)置成INFO,則只有DEBUG不顯示,其余都顯示。也就是說只顯示指定級別及以上的。
建議:在開發(fā)時(shí),設(shè)置成DEBUG,在運(yùn)行時(shí),設(shè)置成INFO?
(二)、延遲加載
1、介紹:
查詢關(guān)聯(lián):一對一、一對多、多對一、多對多
2、一對一
例:
一對多:城市 --- 人
如果不采取延遲加載(立即加載),查詢時(shí)會(huì)將一和多都查詢,城市、人表中的所有人都會(huì)查詢出來。但是有的時(shí)候,我們只想查詢一,不想查詢多。這里卻全都查詢出來了。這樣的只查詢一,不查詢多的操作叫延遲加載。
具體操作:
(1)、延遲加載:需要配置conf.xml

例:
conf.xml配置:

personMapper.xml配置:

新建并cardMapper.xml配置:

personMapper接口:

測試類:

通過例子debug發(fā)現(xiàn),如果程序只需要person,則只向數(shù)據(jù)庫發(fā)送了查詢person的SQL;當(dāng)我們后續(xù)需要用到card信息的時(shí)候,再第二次發(fā)送查詢學(xué)生證SQL。
如果增加了mapper.xml,要修改conf.xml配置文件(將新增的mapper.xml加載進(jìn)去)
3、一對多:和一對一的延遲加載配置相同
延遲加載的步驟,先查city
1、開啟延遲加載:conf.xml配置settings
2、配置mapper.xml:配置cityMapper.xml和personMapper.xml

即:查詢person的sql通過select指定,并且通過column指定外鍵

根據(jù)cityId查詢city,這個(gè)cityId通過外鍵傳入。
例:
conf.xml配置:配置settings和cityMapper.xml配置
配置cityMapper.xml:

配置personMapper.xml:

cityMapper接口:

測試類:
