用mybatis中的insert方法插入数据,返回值为1,但数据库却没有数据

时间:2020-01-28 22:06:15 类型:JAVA
字号:    

  用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), 那么就会自动提交事务

以上两种方案, 都会真正添加数据到数据库中

<