使用mybatis执行对应的SQL Mapper配置中的insert、update、delete等标签操作,数据库记录不变...

博主使用SpringMVC集成MyBatis执行insert操作,程序无报错但数据库无插入记录。经查找资料发现,MyBatis做Insert、Update、Delete时会开启事务且不会自动提交,需手动调用session.commit()进行事务提交,添加该语句后记录成功入库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我使用springMVC集成mybatis,执行SQLMapper配置文件里的insert操作,发现程序没有报错,但数据库表里却没有刚才插入的记录。查了很多资料,终于在一篇博客上找到了答案:在执行完方法后,必须有 session.commit();这句话进行事务提交。因为在做Insert  Update  Delete的时候,会先开启事务,而Mybatis不会自动提交(或许可以设置,我还不知道),所以,必须手动提交事务。于是我才调用包含insert操作的方法之后添加session.commit(),记录成功入库。

接口定义部分:
public interface MenuMapper {
    public List<MenuVO> getParentMenu(Map<String,Object> paramMap );
    public List<MenuVO> getSubMenu(Map<String,Object> paramMap);
    public int saveMenu(MenuVO menuVo);
}
接口调用部分:
try{
  MenuMapper menuMapper=sqlSession.getMapper(MenuMapper.class);
   System.out.println(new Gson().toJson(menuvo));
   int flag=menuMapper.saveMenu(menuvo);
   sqlSession.commit();
   return flag;
}catch (Exception e) {
   logger.info("存储菜单失败,error:"+ e.getMessage());
} finally {
    sqlSession.close();
}
SQL Mapper配置文件:
<!--执行增加操作的SQL语句。id和parameterType分别与MenuMapper接口中的saveMenu方法的名字和参数类型一致。useGeneratedKeys设置为"true"表明要MyBatis获取由数据库自动生成的主键;keyProperty="menuId"指定把获取到的主键值注入到MenuVO的,menuId属性--> <insert id="saveMenu" parameterType="MenuVO" useGeneratedKeys="true" keyProperty="menuId"> insert into menu(parentMenuId,menuUrl,menuName) values(#{parentMenuId},#{menuUrl},#{menuName})

</insert>

 

 

转载于:https://www.cnblogs.com/vtyluoluo/p/4544445.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值