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