用mybatis中的insert方法插入数据,返回值为1,但数据库却没有数据
用Mapper中的
<!-- 添加一个用户,#{uname}为com.mybatis.po.MyUser的属性值 -->
<insert id="addUser" parameterType="com.mybatis.po.MyUser">
insert into user(uname,usex)values(#{uname},#{usex})
</insert>在测试类中写了这个
//读取配置文件 mybatis-config.xml
InputStream config = Resources.getResourceAsStream("mybatis-config.xml");
//根据配置文件构建SqlSessionFactory
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
//通过 SqlSessionFactory 创建SqlSession
SqlSession ss = ssf.openSession();
//SqlSession执行映射文件中定义的SQL,并返回映射结果
//com.mybatis.mapper.UserMapper.selectUserById为UserMapper.xml中的命名空间+select 的id
//查询一个用户
/*MyUser mu = ss.selectOne("com.mybatis.mapper.UserMapper.selectUserById", 1);
System.out.println(mu.getUname() + mu.getUid());*/
//添加一个用户
MyUser addmu = new MyUser();
addmu.setUname("小李");
addmu.setUsex("男");
Integer one = ss.insert("com.mybatis.mapper.UserMapper.addUser", addmu);
System.out.println(one);结果是 one = 1; 但是到数据库的表中查询,却没有数据
最后找到解决方案如下:
1. ssf.openSession();的时候(默认为false),设置了没有自动提交
在返回one后面加上 ssf.commit(); 就可以了,提交事务
2. ssf.openSession(true), 那么就会自动提交事务
以上两种方案, 都会真正添加数据到数据库中
