用mybatis中的insert方法插入數(shù)據(jù),返回值為1,但數(shù)據(jù)庫卻沒有數(shù)據(jù)
用Mapper中的
<!-- 添加一個(gè)用戶,#{uname}為com.mybatis.po.MyUser的屬性值 -->
<insert id="addUser" parameterType="com.mybatis.po.MyUser">
insert into user(uname,usex)values(#{uname},#{usex})
</insert>在測(cè)試類中寫了這個(gè)
//讀取配置文件 mybatis-config.xml
InputStream config = Resources.getResourceAsStream("mybatis-config.xml");
//根據(jù)配置文件構(gòu)建SqlSessionFactory
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
//通過 SqlSessionFactory 創(chuàng)建SqlSession
SqlSession ss = ssf.openSession();
//SqlSession執(zhí)行映射文件中定義的SQL,并返回映射結(jié)果
//com.mybatis.mapper.UserMapper.selectUserById為UserMapper.xml中的命名空間+select 的id
//查詢一個(gè)用戶
/*MyUser mu = ss.selectOne("com.mybatis.mapper.UserMapper.selectUserById", 1);
System.out.println(mu.getUname() + mu.getUid());*/
//添加一個(gè)用戶
MyUser addmu = new MyUser();
addmu.setUname("小李");
addmu.setUsex("男");
Integer one = ss.insert("com.mybatis.mapper.UserMapper.addUser", addmu);
System.out.println(one);結(jié)果是 one = 1; 但是到數(shù)據(jù)庫的表中查詢,卻沒有數(shù)據(jù)
最后找到解決方案如下:
1. ssf.openSession();的時(shí)候(默認(rèn)為false),設(shè)置了沒有自動(dòng)提交
在返回one后面加上 ssf.commit(); 就可以了,提交事務(wù)
2. ssf.openSession(true), 那么就會(huì)自動(dòng)提交事務(wù)
以上兩種方案, 都會(huì)真正添加數(shù)據(jù)到數(shù)據(jù)庫中
