JavaWeb学习之路——SSM框架之Mybatis(三)
數(shù)據(jù)庫(kù)配置和相關(guān)類創(chuàng)建看上篇:JavaWeb學(xué)習(xí)之路——SSM框架之Mybatis(二)
https://blog.csdn.net/kuishao1314aa/article/details/83270578
這里說(shuō)明下log4j日志用法和參數(shù)傳遞到xml文件中
1.目錄結(jié)構(gòu)
?
2.目錄解釋:
src下:
pojo包:寫java文件
serverlet包:寫serverlet文件
service包:寫接口和它的實(shí)現(xiàn)類
mapper包:用來(lái)配置數(shù)據(jù)庫(kù)文件
WebContent:項(xiàng)目的根目錄,放置jsp文件和資源文件包
?
3.路徑解釋
絕對(duì)路徑:路徑中以/開(kāi)頭的都叫做全路徑,從根目錄(WebContent)出發(fā)找到其他資源的過(guò)程
相對(duì)路徑:不以/開(kāi)頭都是相對(duì)路徑,相對(duì)路徑是從當(dāng)前資源出發(fā)找到其他資源的路徑
請(qǐng)求轉(zhuǎn)發(fā)/表示W(wǎng)ebContent目錄,重定向<a herf="">、src下/表示tomcat的webapps文件夾根目錄
?
4.log4j
(1)介紹
一個(gè)apache推出的開(kāi)源免費(fèi)日志處理的類庫(kù)。
在項(xiàng)目中編寫System.out.println();輸出到控制臺(tái),項(xiàng)目發(fā)布到tomacat后,沒(méi)有控制臺(tái),不容易觀察輸出結(jié)果。
log4j作用,不僅能把內(nèi)容輸出到控制臺(tái),還能輸出到文件
使用方法:
導(dǎo)入log4j-xxx.jar;
在src下新建log4j.properties(不能改變路徑和名稱);
?
(2)配置文件
log4j輸出級(jí)別:五個(gè)級(jí)別——fatal(致命錯(cuò)誤)>error(錯(cuò)誤)>warn(警告)>info(普通信息)>debug(調(diào)試信息)
在log4j第一行中控制輸出級(jí)別、輸出目的地,寫誰(shuí)往哪里輸出,先下面為往控制臺(tái)和文件輸出普通信息
%C為輸出類信息,
log4j.rootCategory=INFO, CONSOLE,LOGFILElog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern=%C %d{YYYY-MM-DD hh:mm:ss} %p %m %nlog4j.appender.LOGFILE=org.apache.log4j.FileAppenderlog4j.appender.LOGFILE.File=axis.loglog4j.appender.LOGFILE.Append=truelog4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayoutlog4j.appender.LOGFILE.layout.ConversionPattern=%C %m %L %n?
?
輸出結(jié)果:
INFO級(jí)別:
?
DEBUG級(jí)別:
?
(3)控制臺(tái)顯示輸出
在mybatis全局配置文件中通過(guò)<settings>標(biāo)簽來(lái)控制mybatis全局開(kāi)關(guān)
? <settings><setting name="logImpl" value="LOG4J"/></settings>前提:src下有配置文件log4j.properties,lib下有l(wèi)og4j.jar
可以控制輸出內(nèi)容級(jí)別,將mapper.xml中a.b.c的內(nèi)容設(shè)置為DEBUG類別
包級(jí)別,<mapper?> namespace屬性中最后的類名
log4j.logeer.a.b.c=DEBUG
?
5.mybatis參數(shù)傳遞
(1).parameterType屬性:在xxxMapper.xml中設(shè)置相應(yīng)的參數(shù)類型、sql語(yǔ)句中寫參數(shù)位置,
用parameterType表示參數(shù),#{0}表示獲取參數(shù)內(nèi)容,里面從0開(kāi)始,也可以使用#{param1}表示第一個(gè)參數(shù),只有一個(gè)參數(shù)
則對(duì)#{}內(nèi)容沒(méi)有要求
? <select id="selById" resultType="com.likui.pojo.Flower" parameterType="int">select * from flower where id=#{0}</select>?
(2).SqlSession的selectList()和selectOne()的第二個(gè)參數(shù)和selectMap()的第三個(gè)參數(shù)都表示方法的參數(shù)
傳遞參數(shù)來(lái)返回對(duì)應(yīng)結(jié)果:
?????Flower flower=session.selectOne("a.b.selById",2);System.out.println(flower.getId()+"\t\t"+flower.getName()+"\t\t"+flower.getPrice()+"\t\t"+flower.getProduction());控制臺(tái)輸出DEBUG:
?
(3).#{}和${}區(qū)別
#{}java中使用的是參數(shù)內(nèi)容,支持索引、param1獲取指定位置,并且SQL語(yǔ)句中使用?占位符處理
${} java文件中使用的字符串拼接,不適用?占位符,默認(rèn)找${}中的內(nèi)容的get/set方法,如果使用的是數(shù)字,則不表示位置
比較常用的是#{}
? <select id="selById" resultType="com.likui.pojo.Flower" parameterType="com.likui.pojo.Flower">select * from flower where id=${id}</select> ?Flower flower2=new Flower();flower2.setId(1);Flower flower=session.selectOne("a.b.selById",flower2);?
(4).傳遞多個(gè)參數(shù)類型
使用Map集合或者對(duì)象來(lái)傳遞:
xml文件中配置參數(shù)
map中#{}中寫map對(duì)應(yīng)的key值
<select id="c" resultType="com.likui.pojo.Flower" parameterType="map">select * from flower where id=#{id} and name=#{name}</select>?
java文件中傳遞參數(shù):
Flower flower2=new Flower();flower2.setId(1);flower2.setName("牡丹");Map<String, Object> map=new HashMap<>();map.put("id", flower2.getId());map.put("name", flower2.getName());Flower flower=session.selectOne("a.b.c",map);6.別名-typeAliases
在mybatis.xml數(shù)據(jù)庫(kù)配置文件中寫上別名:
? <typeAliases><typeAlias type="com.likui.pojo.Flower" alias="flo"/></typeAliases>然后在mapper.xml數(shù)據(jù)庫(kù)語(yǔ)句中可以用上類的別名來(lái)代替相應(yīng)類
?<select id="c" resultType="flo" parameterType="map">select * from flower where id=#{id} and name=#{name}</select>?
總結(jié)
以上是生活随笔為你收集整理的JavaWeb学习之路——SSM框架之Mybatis(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JavaWeb学习之路——SSM框架之M
- 下一篇: JavaWeb学习之路——SSM框架之S