您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
06-mybatis的增删改查-插入数据操作
发布时间:2025-01-23 21:26:13编辑:雪饮阅读()
-
接续上篇,这次十亿mybatis做插入操作
首先在UserMapper.xml中新增insert如:
<!--新增操作-->
<insert id="save" parameterType="sp24.domain.User">
insert into user values(#{id},#{username},#{password})
</insert>
于mapper标签中
然后编写测试方法
@Test
public void test2Save() throws IOException {
InputStream resourceAsStream= Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession=sqlSessionFactory.openSession();
User user=new User();
user.setUsername("kasumi");
user.setPassword("123456");
sqlSession.insert("userMapper.save",user);
//释放资源
sqlSession.close();
}
此时先观察到数据库中user表的最新id是12,然后执行上面这个test2Save方法。
我这里报了一个错误是因为我的数据表上面还有剩余2个字段,不止3个字段。那么修改下插入标签。如
<!--新增操作-->
<insert id="save" parameterType="sp24.domain.User">
insert into user values(#{id},#{username},#{password},null,null)
</insert>
然后我们再次执行test2Save方法就没有报错了。
你刷新数据表可能没有看到新数据,这是因为默认情况下openSession产生的会话是没有自动提交的。
没有提交事务,但是自增id会产生的,所以当下次提交后就相当于直接自增id涨了两个单位。
所以再编写一个测试方法如
@Test
public void test2Save2() throws IOException {
InputStream resourceAsStream= Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession=sqlSessionFactory.openSession();
User user=new User();
user.setUsername("kasumi");
user.setPassword("123456");
sqlSession.insert("userMapper.save",user);
sqlSession.commit();
//释放资源
sqlSession.close();
}
执行这个test2Save2方法后刷新数据表看到有新数据了,并且数据id是14,也就是跨过了13,其实test2Save执行成功虽然没有提交事务,但是自增id还是自动产生了的原因。另外一个就是我们user对象的id其实可以不设置的,那么数据表的主键由于设置的是not null并且自动递增,所以不影响的。
关键字词:mybatis,插入