国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Mybatis 日志(Apache Commons Logging)

這篇具有很好參考價(jià)值的文章主要介紹了Mybatis 日志(Apache Commons Logging)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

之前我們介紹了使用JDK Log打印Mybatis運(yùn)行時(shí)的日志;本篇我們介紹使用Apache Commons Logging打印Mybatis運(yùn)行時(shí)的日志。

如何您對(duì)Mybatis中使用JDK Log不太了解,可以參考:

Mybatis 日志(JDK Log)https://blog.csdn.net/m1729339749/article/details/132565362

一、添加依賴(lài)

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.49</version>
</dependency>
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>

二、配置Mybatis

在mybatis-config.xml文件中配置logImpl

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="logImpl" value="COMMONS_LOGGING"/>
    </settings>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="org.gjt.mm.mysql.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/demo?useUnicode=true&amp;useSSL=false&amp;characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="horse"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

在配置文件中,我們配置了logImpl,值配置成了COMMONS_LOGGING,代表的是使用Apache Commons Logging提供的日志系統(tǒng)

由于Apache Commons Logging 僅提供用于寫(xiě)入日志消息的橋接器,默認(rèn)情況下Apache Commons Logging橋接到JDK Log日志系統(tǒng),這里我們使用默認(rèn)的日志橋接方式,配置JDK日志。

三、JDK日志配置

1、logging.properties

在resources目錄下新建logging.properties配置文件

handlers=java.util.logging.ConsoleHandler
.level=INFO

cn.horse.demo.UserInfoMapper.level=FINEST
java.util.logging.ConsoleHandler.level=ALL
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-%1$td %1$tT.%1$tL %4$s %3$s - %5$s%6$s%n

handlers代表的是日志處理器,java.util.logging.ConsoleHandler處理器用于直接在控制臺(tái)打印日志

.level代表的是全局日志級(jí)別

java.util.logging.ConsoleHandler.level設(shè)置的是處理器需要處理的日志級(jí)別

java.util.logging.ConsoleHandler.formatter設(shè)置的是處理器打印日志使用的格式化器

java.util.logging.SimpleFormatter.format設(shè)置的是處理器打印日志的格式

????????1$:代表的是執(zhí)行時(shí)間

????????2$:代表的是調(diào)用源(Jdk Log的調(diào)用源都為Jdk14LoggingImpl)

????????3$:代表的是日志名稱(chēng)

????????4$:代表的是日志級(jí)別

????????5$:代表的是日志內(nèi)容

????????6$:代表的是異常信息

????????格式的定義需要參考java.util.Formatter

2、JdkLogConfig

我們?cè)赾n.horse.demo下新建JdkLogConfig類(lèi)

JdkLogConfig類(lèi):

package cn.horse.demo;

import java.io.IOException;
import java.io.InputStream;
import java.util.logging.LogManager;

public class JdkLogConfig {

    public JdkLogConfig() {
        try {
            InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("logging.properties");
            LogManager.getLogManager().readConfiguration(inputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

此類(lèi)用于加載logging.properties配置文件

四、啟動(dòng)程序

1、準(zhǔn)備數(shù)據(jù)

-- 如果數(shù)據(jù)庫(kù)不存在則創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE IF NOT EXISTS demo DEFAULT CHARSET utf8;
-- 切換數(shù)據(jù)庫(kù)
USE demo;
-- 創(chuàng)建用戶(hù)表
CREATE TABLE IF NOT EXISTS T_USER(
  ID INT PRIMARY KEY,
  USERNAME VARCHAR(32) NOT NULL,
  AGE INT NOT NULL
);
-- 插入用戶(hù)數(shù)據(jù)
INSERT INTO T_USER(ID, USERNAME, AGE)
VALUES(1, '張三', 20),(2, '李四', 22),(3, '王五', 24);

2、StatementUtils類(lèi)

在cn.horse.demo下新建StatementUtils類(lèi)

StatementUtils類(lèi):

package cn.horse.demo;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;
import java.util.List;
import java.util.Objects;

public abstract class StatementUtils {

    public static void find(String statement, Object parameter) {
        // 讀取mybatis配置文件
        InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("mybatis-config.xml");
        // 根據(jù)配置創(chuàng)建SqlSession工廠
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
                .build(inputStream);

        SqlSession sqlSession = null;
        try {
            // 創(chuàng)建SqlSession
            sqlSession = sqlSessionFactory.openSession();
            // 查詢(xún)用戶(hù)列表
            List<UserInfo> userInfoList = sqlSession.selectList(statement, parameter);
            for (UserInfo userInfo: userInfoList) {
                System.out.println(userInfo);
            }
        } finally {
            // 關(guān)閉會(huì)話
            if(Objects.nonNull(sqlSession)) {
                sqlSession.close();
            }
        }
    }
}

3、UserInfo類(lèi)

在cn.horse.demo下新建UserInfo類(lèi)

UserInfo類(lèi):

package cn.horse.demo;

public class UserInfo {

    private Integer id;
    private String name;
    private Integer age;

    @Override
    public String toString() {
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append('{');
        stringBuilder.append("id: " + this.id);
        stringBuilder.append(", ");
        stringBuilder.append("name: " + this.name);
        stringBuilder.append(", ");
        stringBuilder.append("age: " + this.age);
        stringBuilder.append('}');
        return stringBuilder.toString();
    }
}

4、UserInfoMapper配置

在resources下新建demo目錄,在目錄下新建UserInfoMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.horse.demo.UserInfoMapper">

    <select id="findByAge" resultType="cn.horse.demo.UserInfo">
        SELECT
            ID,
            USERNAME name,
            AGE
        FROM T_USER
        WHERE AGE > #{age}
    </select>
</mapper>

在mybatis-config.xml文件中引入U(xiǎn)serInfoMapper.xml配置文件

<mappers>
    <mapper resource="demo/UserInfoMapper.xml" />
</mappers>

5、啟動(dòng)程序

package cn.horse.demo;

public class Main {
    public static void main(String[] args) {
        System.setProperty("java.util.logging.config.class", "cn.horse.demo.JdkLogConfig");
        StatementUtils.find("cn.horse.demo.UserInfoMapper.findByAge", 21);
    }
}

執(zhí)行的結(jié)果如下:

Mybatis 日志(Apache Commons Logging),Mybatis,mybatis,java文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-730655.html

到了這里,關(guān)于Mybatis 日志(Apache Commons Logging)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用Apache Commons Pool2創(chuàng)建Java對(duì)象池

    在Java應(yīng)用程序中,頻繁地創(chuàng)建和銷(xiāo)毀對(duì)象會(huì)消耗大量的內(nèi)存和CPU資源,影響應(yīng)用程序的性能和可伸縮性。為了解決這個(gè)問(wèn)題,我們可以使用對(duì)象池技術(shù),將對(duì)象存儲(chǔ)在池中,在需要的時(shí)候從池中獲取,使用完畢后將對(duì)象歸還到池中。Apache Commons Pool2是一個(gè)流行的開(kāi)源對(duì)象池實(shí)

    2023年04月08日
    瀏覽(35)
  • JAVA深化篇_26——Apache commons-io工具包的使用

    Apache基金會(huì)介紹 Apache軟件基金會(huì)(也就是Apache Software Foundation,簡(jiǎn)稱(chēng)為ASF),是專(zhuān)門(mén)為支持開(kāi)源軟件項(xiàng)目而辦的一個(gè)非盈利性組織。在它所支持的Apache項(xiàng)目與子項(xiàng)目中,所發(fā)行的軟件產(chǎn)品都遵循Apache許可證(Apache License)。 官方網(wǎng)址為:www.apache.org 。 很多著名的Java開(kāi)源項(xiàng)目

    2024年02月06日
    瀏覽(69)
  • java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream

    java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream

    一、問(wèn)題現(xiàn)象 在導(dǎo)出 Excel 過(guò)程中,程序報(bào)錯(cuò)如下: 二、問(wèn)題原因 通過(guò)報(bào)錯(cuò)信息可以看出,這個(gè)異常通常出現(xiàn)在你在代碼里使用了 org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream 這個(gè)類(lèi),但是該類(lèi)所在的依賴(lài)包 commons-io 并沒(méi)有被引入或不存在。 三、解決方案 解決這個(gè)問(wèn)題

    2024年02月10日
    瀏覽(39)
  • 【Mybatis小白從0到90%精講】15: Mybatis配置打印SQL日志

    【Mybatis小白從0到90%精講】15: Mybatis配置打印SQL日志

    日志(Log)是每個(gè)程序都不可或缺的一部分,它可以幫助開(kāi)發(fā)人員診斷和調(diào)試問(wèn)題。Mybatis,作為一款備受贊譽(yù)的ORM框架,自然也提供了強(qiáng)大的日志功能。 它不僅提供了 內(nèi)置的標(biāo)準(zhǔn)實(shí)現(xiàn) ,還支持 集成各種主流的日志框架 ,讓我們可以輕松地 查看最終執(zhí)行的SQL語(yǔ)句 ,這在進(jìn)行數(shù)

    2024年02月05日
    瀏覽(22)
  • mybatis打印sql日志

    我們?nèi)粘2僮鲾?shù)據(jù)庫(kù)的過(guò)程一般都是使用mybatis中執(zhí)行sql操作,有時(shí)候?yàn)榱舜_認(rèn)mybatis拼接的sql是否正確,就需要在日志中打印出具體的sql語(yǔ)句,對(duì)應(yīng)的入?yún)⒁约皵?shù)據(jù)庫(kù)的返回值 一.sql日志輸出到控制臺(tái),修改mybatis-config文件,指定如下配置: 二.sql日志輸出到文件,修改mybatis

    2024年02月15日
    瀏覽(19)
  • Mybatis基礎(chǔ)模塊-日志管理

    Mybatis基礎(chǔ)模塊-日志管理

    適配器使接口不兼容的對(duì)象可以相互合作。 Java的日志框架有很多,Log4j,Log4j2,Apache Commons Log,java.util.logging,slf4j等,接口不盡相同,Mybatis為了統(tǒng)一匹配這些框架,使用到了適配器模式。 Mybatis自定義了日志接口:org.apache.ibatis.logging.Log。 以下為其類(lèi)圖: 上圖的實(shí)現(xiàn)相當(dāng)于adapt

    2024年02月16日
    瀏覽(18)
  • 【八】mybatis 日志模塊設(shè)計(jì)

    【八】mybatis 日志模塊設(shè)計(jì)

    簡(jiǎn)介: 閑來(lái)無(wú)事閱讀一下mybatis的日志模塊設(shè)計(jì),學(xué)習(xí)一下優(yōu)秀開(kāi)源框架的設(shè)計(jì)思路,提升自己的編碼能力 在Mybatis內(nèi)部定義了4個(gè)級(jí)別:Error:錯(cuò)誤 、warn:警告、debug:調(diào)試、trance,日志優(yōu)先級(jí)如下: errorwarndebugtrance 如下圖可以看到mybatis日志模塊的源碼結(jié)構(gòu)圖: ?mybatis通過(guò)適配

    2024年02月14日
    瀏覽(15)
  • mybatis日志工廠

    mybatis日志工廠

    如果一個(gè)數(shù)據(jù)庫(kù)操作,出現(xiàn)異常,我們需要排錯(cuò),日志就是最好的助手 官方給我們提供了logImpl:指定 MyBatis 所用日志的具體實(shí)現(xiàn),未指定時(shí)將自動(dòng)查找。 ?在配置文件里添加: ?若要使用非標(biāo)準(zhǔn)日志需要先導(dǎo)包,例如Log4j 導(dǎo)入包: ? 1.在要使用的地方導(dǎo)入包:import org.apach

    2024年02月15日
    瀏覽(19)
  • Mybatis 日志(JDK Log)

    Mybatis 日志(JDK Log)

    上一篇我們介紹了Mybatis中的參數(shù),本篇我們使用JDK Log打印一下Mybatis運(yùn)行時(shí)的日志,看一下Mybatis執(zhí)行的過(guò)程。 這里我選取上一篇的示例進(jìn)行JDK Log的集成,這里如果您想對(duì)上一篇進(jìn)行詳細(xì)了解,可以參考: Mybatis參數(shù)(parameterType) https://blog.csdn.net/m1729339749/article/details/132548838 在

    2024年02月10日
    瀏覽(19)
  • Springboot + MyBatis 進(jìn)行日志輸出

    Springboot + MyBatis 進(jìn)行日志輸出

    ??書(shū)接上回,咱們處理完成 druid 數(shù)據(jù)源連接池日志后,所有執(zhí)行sql的日志都可以打印出來(lái)了,但是問(wèn)題也是接踵而來(lái),日志文件中密密麻麻都是日志,而當(dāng)我想要 查看某個(gè)dao的sql 或者 想要通過(guò)sql找到其所在dao 是非常困難的,通過(guò)考慮決定,將druid日志輸出到一個(gè)單獨(dú)的日

    2024年02月13日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包