您好,登錄后才能下訂單哦!
mybatis中insert返回值為1但數據庫卻沒有數據的原因?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
1. 排除數據庫中表設置錯誤
使用show variables like '%autocommit%';
查看表是否設置自動提交
autocommit已經設置為on,無問題
2. 檢查測試類代碼
Test.java
import entity.Data; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.RowBounds; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test { public static void main(String[] args) throws Exception { //加載配置文件為流 InputStream is = Resources.getResourceAsStream("MybatisDemo.xml"); //創建SqlSessionFactory工廠 SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is); //核心接口(發送SQL語句) SqlSession session = ssf.openSession(); //根據id查詢 Data data=session.selectOne("com.selectData",2); System.out.println("ID:"+data.getId()+"\n"+"姓名:"+data.getName()+"\n"+"年齡:"+data.getAge()); //查詢所有 List<Data> list = session.selectList("com.selectAll"); System.out.println(list); for(int i = 0; i < list.size(); i++){ System.out.println(list.get(i).toString()); } //模糊查詢 List<Data> list1 = session.selectList("com.selectLike","t"); System.out.println(list1); for(int i = 0; i < list1.size(); i++){ System.out.println(list1.get(i).toString()); } //分頁查詢 Map map=new HashMap<>(); map.put("start",0); map.put("length",2); List<Data> list2 = session.selectList("com.selectPage",map); System.out.println(list2); //分頁查詢 RowBounds bunds=new RowBounds(0,1); List<Data> list3= session.selectList("com.selectPage1",null,bunds); System.out.println(list3); Data data1 = new Data("楊婷婷",24); int rows=session.insert("com.insertData", data1); System.out.println(rows); //釋放資源 session.close(); } }
實際上,只有select會自動提交,insert、update、delete并不會自動提交,所以問題在于代碼
并未設置一個手動提交。
2. 兩種解決辦法
2.1 利用commit
增加一行代碼以后,發現并沒有什么用,證明問題不在這。運行后數據庫中仍然無數據。
實際上,并不是commit方法不管用,而是添加代碼位置不對,應該是session中有了相應指令再去提交,所以將session.commit()放到insert命令后,如下:
數據成功插入數據庫。
2.2 openSession()方法參數問題
在openSession()方法中寫入參數 true.
數據成功插入數據庫,完美!
關于mybatis中insert返回值為1但數據庫卻沒有數據的原因問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。