mybatis中insert返回值為1,但數(shù)據(jù)庫卻沒有數(shù)據(jù)
今天在利用Mybatis框架進行數(shù)據(jù)庫插入時,遇到了好幾個超級奇怪的問題,也可能是我真的太菜雞了。做個記錄吧~
1. 排除數(shù)據(jù)庫中表設(shè)置錯誤
使用show variables like '%autocommit%';查看表是否設(shè)置自動提交

autocommit已經(jīng)設(shè)置為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");
//創(chuàng)建SqlSessionFactory工廠
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
//核心接口(發(fā)送SQL語句)
SqlSession session = ssf.openSession();
//根據(jù)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并不會自動提交,所以問題在于代碼

并未設(shè)置一個手動提交。
2. 兩種解決辦法
2.1 利用commit

增加一行代碼以后,發(fā)現(xiàn)并沒有什么用,證明問題不在這。運行后數(shù)據(jù)庫中仍然無數(shù)據(jù)。

實際上,并不是commit方法不管用,而是添加代碼位置不對,應(yīng)該是session中有了相應(yīng)指令再去提交,所以將session.commit()放到insert命令后,如下:

數(shù)據(jù)成功插入數(shù)據(jù)庫。
2.2 openSession()方法參數(shù)問題
在openSession()方法中寫入?yún)?shù) true.


數(shù)據(jù)成功插入數(shù)據(jù)庫,完美!
到此這篇關(guān)于mybatis中insert返回值為1,但數(shù)據(jù)庫卻沒有數(shù)據(jù)的文章就介紹到這了,更多相關(guān)mybatis insert返回值為1內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Spring-Retry解決Spring Boot應(yīng)用程序中的重試問題
重試的使用場景比較多,比如調(diào)用遠(yuǎn)程服務(wù)時,由于網(wǎng)絡(luò)或者服務(wù)端響應(yīng)慢導(dǎo)致調(diào)用超時,此時可以多重試幾次。用定時任務(wù)也可以實現(xiàn)重試的效果,但比較麻煩,用Spring Retry的話一個注解搞定所有,感興趣的可以了解一下2023-04-04
java中String、StringBuffer與StringBuilder的區(qū)別
這篇文章主要介紹了java 中String和StringBuffer與StringBuilder的區(qū)別,在開發(fā)過程中經(jīng)常會用到String這個類進行操作。需要的朋友可以收藏下,方便下次瀏覽觀看2021-12-12
Spring中的@AutoWired與@Resource及@Qualifier注解詳解
這篇文章主要介紹了Spring中的@AutoWired與@Resource及@Qualifier注解詳解,spring不但支持自己定義的@Autowired注解,所以Autowired與Spring是強相關(guān)性,只能在spring框架中使用,而后幾個注解則不然,需要的朋友可以參考下2023-11-11
java并發(fā)編程專題(六)----淺析(JUC)Semaphore
這篇文章主要介紹了java JUC)Semaphore的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07

