Mybatis框架--優化過程

来源:https://www.cnblogs.com/tianaqiang/archive/2022/08/18/16599371.html
-Advertisement-
Play Games

0. 原代碼預覽 簡單實現在資料庫中插入數據 public void testInsert() throws IOException { //獲取核心配置文件的輸入流 InputStream is = Resources.getResourceAsStream("mybatis-config.xml ...


0. 原代碼預覽

簡單實現在資料庫中插入數據

public void testInsert() throws IOException {
        //獲取核心配置文件的輸入流
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //獲取SqlSessionFactoryBuilder對象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //獲取SqlSessionFactory對象
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        //獲取sql的回話對象sqlSession,是Mybatis提供的操作資料庫的對象
        SqlSession sqlSession = sqlSessionFactory.openSession();
    
    	//獲取UserMapper的代理實現類對象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //調用mapper介面中的方法,實現添加用戶信息的功能
        int result = mapper.insertUser();
        System.out.println("結果:"+result);
      
        //提交事務
        sqlSession.commit();
    
        //關閉sqlSession對象
        sqlSession.close();
    }
  • SqlSession:代表Java程式和資料庫之間的會話。(HttpSession是Java程式和瀏覽器之間的會話)
  • SqlSessionFactory:是“生產”SqlSession的“工廠”。

1. 簡化代碼

根據兩個一致性,可以將獲取UserMapper的代理實現類對象調用mapper介面中的方法兩部分代碼寫為:

//例如我的代碼:
int result = sqlSession.insert("com.atguigu.mybatis.insertUser");//參數是:全類名+方法名。也就是映射文件中sql的id位置

2. 自動提交sql事務

每次都需要手動提交SQL事務sqlSession.commit()。可以在獲取sql的回話對象sqlSession的代碼:sqlSessionFactory.openSession()加一個參數:

SqlSession sqlSession = sqlSessionFactory.openSession(true);

3. 加入log4j日誌功能

  • 在pom.xml中加入依賴

    <!-- log4j日誌 -->
    <dependency>
    	<groupId>log4j</groupId>
    	<artifactId>log4j</artifactId>
    	<version>1.2.12</version>
    </dependency>
    
  • 加入log4j的配置文件

    log4j的配置文件名必須為log4j.xml,存放的位置是src/main/resources目錄下

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
        <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
            <param name="Encoding" value="UTF-8" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS}
    %m (%F:%L) \n" />
            </layout>
        </appender>
        <logger name="java.sql">
            <level value="debug" />
        </logger>
        <logger name="org.apache.ibatis">
            <level value="info" />
        </logger>
        <root>
            <level value="debug" />
            <appender-ref ref="STDOUT" />
        </root>
    </log4j:configuration>
    

    重新運行代碼,查看日誌功能:

    image-20220818163606862


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • 0. 標簽順序 Mybatis核心配置文件中有很多標簽,它們誰誰寫在前寫在後其實是:boom:有順序:boom:要求的: 從前到後: properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactor ...
  • 2.函數的遞歸的定義 函數的遞歸調用:是函數嵌套調用的一種特殊形式 具體是指:在調用一個函數的過程中又直接或者間接的調用到本身,是一個死迴圈,最大遞歸是1000次,超出之後報錯。 2.函數遞歸的調用 # 直接調本身 def f1(): print('是我還是我') f1() f1() # 間接調用 ...
  • 當我們拿到一個對象的引用時,如何知道這個對象是什麼類型、有哪些方法呢? 1.使用type() 首先,我們來判斷對象類型,使用type()函數: 基本類型都可以用type()判斷: >>> type(123) <class 'int'> >>> type('str') <class 'str'> >> ...
  • 1、先配置spring、springmvc通用xml文件的頭部信息 spring、springmvc通用xml文件的模板內容如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework. ...
  • 使用文件流對文件進行複製: package io; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOExce ...
  • K 哥之前寫過一篇關於百度翻譯逆向的文章,也在 bilibili 上出過相應的視頻,最近在 K 哥爬蟲交流群中有群友提出,百度翻譯新增了一個請求頭參數 Acs-Token,如果不攜帶該參數,直接按照以前的方法進行處理,會出現 1022 報錯,並且如果直接將 Acs-Token 寫成定值,前幾次可能能 ...
  • 1、標記跳過 在自動化測試過程中,我們經常會遇到因為某些功能阻塞,未開發完成或者環境等問題,一些測試用例不能執行,如果人工去註釋掉,後面還需要再恢復才能繼續測試,pytest的標記跳過功能就可以實現暫時跳過。 (一)無條件跳過skip 使用方法:通過@pytest.mark.skip(reason= ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...