[mybatis]mybatis紀錄檔的使用和分頁功能的實現

2022-07-23 18:00:17

紀錄檔

Mybatis 通過使用內建的紀錄檔工廠提供紀錄檔功能。內建紀錄檔工廠將會把紀錄檔工作委託給下面的實現之一:

  • SLF4J
  • Apache Commons Logging
  • Log4j 2
  • Log4j
  • JDK logging

設定紀錄檔在mybatis組態檔中:

<configuration>
  <settings>
    ...
    <setting name="logImpl" value="LOG4J"/>
    ...
  </settings>
</configuration>

log4j的使用

Log4j是Apache的一個開源專案,通過使用Log4j,我們可以控制紀錄檔資訊輸送的目的地是控制檯。

可以控制每一條紀錄檔的輸出格式;

通過定義每一條紀錄檔資訊的級別,我們能夠更加細緻地控制紀錄檔的生成過程。

可以通過一個組態檔來靈活地進行設定,而不需要修改應用的程式碼。

(1)導包

<!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

(2)組態檔

### 設定###
log4j.rootLogger = DEBUG,console,file,D,E,datasource

### 設定輸出到控制檯 ###
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n

### 設定輸出到檔案 ###
log4j.appender.file = org.apache.log4j.RollFileAppender
log4j.appender.file.File = ./log/logs.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Append = true
log4j.appender.file.Threshold = DEBUG
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n



### 設定輸出sql的級別,其中logger後面的內容全部為jar包中所包含的包名 ###
log4j.logger.org.apache=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG



### 設定輸出到檔案,且大小到達指定尺寸的時候產生一個新的檔案 ###
#log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
#log4j.appender.ROLLING_FILE.Threshold=ERROR
#log4j.appender.ROLLING_FILE.File=rolling.log
#log4j.appender.ROLLING_FILE.Append=true
#log4j.appender.ROLLING_FILE.MaxFileSize=10KB
#log4j.appender.ROLLING_FILE.MaxBackupIndex=1
#log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
#log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#
#### 設定輸出到郵件 ###
#log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
#log4j.appender.MAIL.Threshold=FATAL
#log4j.appender.MAIL.BufferSize=10
#[email protected]
#log4j.appender.MAIL.SMTPHost=mail.hollycrm.com
#log4j.appender.MAIL.Subject=Log4J Message
#[email protected]
#log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
#log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#
#### 設定輸出到資料庫 ###
#log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
#log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
#log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
#log4j.appender.DATABASE.user=root
#log4j.appender.DATABASE.password=
#log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
#log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
#log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.A1.File=SampleMessages.log4j
#log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
#log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
#
#### 輸出DEBUG 級別以上的紀錄檔到=E://logs/error.log ###
#log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.D.File = E://logs/log.log
#log4j.appender.D.Append = true
#log4j.appender.D.Threshold = DEBUG
#log4j.appender.D.layout = org.apache.log4j.PatternLayout
#log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
#
#### 輸出ERROR 級別以上的紀錄檔到=E://logs/error.log ###
#log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.E.File =E://logs/error.log
#log4j.appender.E.Append = true
#log4j.appender.E.Threshold = ERROR
#log4j.appender.E.layout = org.apache.log4j.PatternLayout
#log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

(3)設定log4j

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

(4)使用

5.分頁

  • 減少資料的處理量

使用limit分頁:

select * from  tableName limit i,n
--tableName : 為資料表;

--i : 為查詢結果的索引值(預設從0開始);

--n : 為查詢結果返回的數量
--不帶 i 時,表示查詢n條資料。

使用RowBounds實現:

(1)介面方法

//分頁
perple getRowBounds();

(2)sql呼叫

<select id="getRowBounds"  resultType="pojo.perple">
    select * from jdbc.perple;
</select>

(3)方法實現

@Test
//分頁
public void test5(){
    //rowbounds實現分頁 從第幾個開始,到幾個結束
    RowBounds rowBounds = new RowBounds(1, 2);


    List<perple> list = sqlSession.selectList("mapper.perpleMapper.getRowBounds",null,rowBounds);
    for(perple p:list){
        System.out.println(p);
    }

    sqlSession.close();
}