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,就能将事务提交改为自动提交。