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,就能將事務提交改為自動提交。