Mybatis框架–優化過程

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="//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