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

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

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

用Mapper中的

1
2
3
4
<!-- 添加一个用户,#{uname}为com.mybatis.po.MyUser的属性值 -->
    <insert id="addUser" parameterType="com.mybatis.po.MyUser">
        insert into user(uname,usex)values(#{uname},#{usex})
    </insert>

在测试类中写了这个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//读取配置文件 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), 那么就会自动提交事务

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

<