MyBatis---添加日志和事務提交


MyBatis---在MyBatis中添加日志

a)、在pom.xml文件中導入依賴

之后就能在控制台中看見運行的具體過程和一些日志

<!-- 日志 -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>
 

 

b)、修改配置文件

在MyBatis的配置文件中添加以下內容,就可以在輸出下面看見日志

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

 

 

MyBatis---事務提交

在保存sql的配置文件中使用insert、update、delete都需要進行提交事務,才能實現對數據庫的修改,否則盡管可以在輸出中看見sql執行成功,但是實際上沒有對數據庫做出任何修改。 在控制台輸出中我們通過日志發現 Setting autocommit to false ,即MyBatis中的自動提交事務默認是關閉的,需要自己調用commit方法手動提交

 

在sql.xml文件中

<!--添加--><insert id="AddUser">
        insert into test_01 values (null,"寒江孤影","江湖故人","cc@qq.com")
    </insert>
 

 

在測試類中

    @Test
    public void test02() throws IOException {
​
        String resource = "MyBatisConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        String sqlId = "com.xlw.testMyBatis.dao.TestUserDao" + "." + "AddUser";
        int i = sqlSession.insert(sqlId);
        System.out.println(i);
        
//        在MyBatis中提交事務默認是手動提交,只執行sql語句不提交事務是無法完成添加insert、刪除delete、修改update操作的
//        這個方法就是手動提交事務
        sqlSession.commit();
        
        sqlSession.close();
​
    }
 

 

insert操作使用占位符

在上面進行insert操作時,沒有使用占位符,為了省去修改操作,就可以使用占位符進行填充,在實際使用時再對占位符進行填充

<!--添加--><insert id="AddUser">
        insert into test_01 values (null,#{test_name},#{test_password},#{test_email})
    </insert>

 

 

在測試方法中

新建一個Object類型的對象,使用對應數據庫表的實體類對象作為這個對象,調用對應的set方法設置對應的值。然后MyBatis在執行時會執行占位符中屬性對應的get方法,將值拿出來放在那個占位符對應的位置,建議屬性和占位符中名字要一樣。

    @Test
    public void test02() throws IOException {
​
        String resource = "MyBatisConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        String sqlId = "com.xlw.testMyBatis.dao.TestUserDao" + "." + "AddUser";
        TestUser testUser = new TestUser();
        testUser.setTest_name("水果撈");
        testUser.setTest_password("123abc");
        testUser.setTest_email("123@qq.com");
        int i = sqlSession.insert(sqlId,testUser);
        System.out.println(i);
​
//        在MyBatis中提交事務默認是手動提交,只執行sql語句不提交事務是無法完成添加insert、刪除delete、修改update操作的
//        這個方法就是手動提交事務
        sqlSession.commit();
​
        sqlSession.close();
​
    }

 

 

使用時可能出現的問題

有時候會出現對應的sql.xml和配置文件不能被編譯到具體執行的文件夾target下,解決辦法

1、刪了target重新編譯

2、清除IDEA的緩存並重啟IDEA

3、使用maven窗口提供的clean,再compile,跟第一種方式差不多,這個優雅點

4、點擊Build重新編譯本項目

 

自動提交事務

在SqlSession中可以發現有很多OpenSession方法,其中有一個SqlSession openSession(boolean var1);的方法。在調用OpenSession方法時添加參數true,就能將事務提交改為自動提交。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM