用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ù)庫中