1. 程式人生 > >JavaWeb學習之路——SSM框架之Mybatis(三)

JavaWeb學習之路——SSM框架之Mybatis(三)

前提:JavaWeb學習之路——SSM框架之Mybatis(二)

1.目錄結構

2.目錄解釋:

src下:

pojo包:寫java檔案

serverlet包:寫serverlet檔案

service包:寫介面和它的實現類

mapper包:用來配置資料庫檔案

WebContent:專案的根目錄,放置jsp檔案和資原始檔包

3.路徑解釋

絕對路徑:路徑中以/開頭的都叫做全路徑,從根目錄(WebContent)出發找到其他資源的過程

相對路徑:不以/開頭都是相對路徑,相對路徑是從當前資源出發找到其他資源的路徑

請求轉發/表示WebContent目錄,重定向<a herf="">、src下/表示tomcat的webapps資料夾根目錄

4.log4j

(1)介紹

一個apache推出的開源免費日誌處理的類庫。

在專案中編寫System.out.println();輸出到控制檯,專案釋出到tomacat後,沒有控制檯,不容易觀察輸出結果。

log4j作用,不僅能把內容輸出到控制檯,還能輸出到檔案

使用方法:

匯入log4j-xxx.jar;

在src下新建log4j.properties(不能改變路徑和名稱);

(2)配置檔案

log4j輸出級別:五個級別——fatal(致命錯誤)>error(錯誤)>warn(警告)>info(普通訊息)>debug(除錯資訊)

在log4j第一行中控制輸出級別、輸出目的地,寫誰往哪裡輸出,先下面為往控制檯和檔案輸出普通訊息

%C為輸出類資訊,

log4j.rootCategory=INFO, CONSOLE,LOGFILE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

log4j.appender.CONSOLE.layout.ConversionPattern=%C %d{YYYY-MM-DD hh:mm:ss} %p %m %n

log4j.appender.LOGFILE=org.apache.log4j.FileAppender

log4j.appender.LOGFILE.File=axis.log

log4j.appender.LOGFILE.Append=true

log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout

log4j.appender.LOGFILE.layout.ConversionPattern=%C %m %L %n

輸出結果:

INFO級別:

DEBUG級別:

(3)控制檯顯示輸出

在mybatis全域性配置檔案中通過<settings>標籤來控制mybatis全域性開關

  <settings>

  <setting name="logImpl" value="LOG4J"/>

  </settings>

前提:src下有配置檔案log4j.properties,lib下有log4j.jar

可以控制輸出內容級別,將mapper.xml中a.b.c的內容設定為DEBUG類別

包級別,<mapper > namespace屬性中最後的類名

log4j.logeer.a.b.c=DEBUG

5.mybatis引數傳遞

(1).parameterType屬性:在xxxMapper.xml中設定相應的引數型別、sql語句中寫引數位置,

用parameterType表示引數,#{0}表示獲取引數內容,裡面從0開始,也可以使用#{param1}表示第一個引數,只有一個引數

則對#{}內容沒有要求

  <select id="selById" resultType="com.likui.pojo.Flower" parameterType="int">

   select * from flower where id=#{0}

  </select>

(2).SqlSession的selectList()和selectOne()的第二個引數和selectMap()的第三個引數都表示方法的引數

傳遞引數來返回對應結果:

     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());

控制檯輸出DEBUG:

(3).#{}和${}區別

#{}java中使用的是引數內容,支援索引、param1獲取指定位置,並且SQL語句中使用?佔位符處理

${} java檔案中使用的字串拼接,不適用?佔位符,預設找${}中的內容的get/set方法,如果使用的是數字,則不表示位置

比較常用的是#{}

  <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).傳遞多個引數型別

使用Map集合或者物件來傳遞:

xml檔案中配置引數

map中#{}中寫map對應的key值

<select id="c" resultType="com.likui.pojo.Flower" parameterType="map">

  select * from flower where id=#{id} and name=#{name}

  </select>

java檔案中傳遞引數:

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資料庫配置檔案中寫上別名:

  <typeAliases>

  <typeAlias type="com.likui.pojo.Flower" alias="flo"/>

  </typeAliases>

然後在mapper.xml資料庫語句中可以用上類的別名來代替相應類

 <select id="c" resultType="flo" parameterType="map">

  select * from flower where id=#{id} and name=#{name}

  </select>