mybatis中insert返回值为1,但数据库却没有数据

 更新时间:2020年10月23日 11:36:56   作者:就是二二二二婷  
这篇文章主要介绍了mybatis中insert返回值为1,但数据库却没有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

今天在利用Mybatis框架进行数据库插入时,遇到了好几个超级奇怪的问题,也可能是我真的太菜鸡了。做个记录吧~

1. 排除数据库中表设置错误

使用show variables like '%autocommit%';查看表是否设置自动提交

在这里插入图片描述

autocommit已经设置为on,无问题

2. 检查测试类代码

Test.java

import entity.Data;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;


import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test {
 public static void main(String[] args) throws Exception {
  //加载配置文件为流
  InputStream is = Resources.getResourceAsStream("MybatisDemo.xml");
  //创建SqlSessionFactory工厂
  SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
  //核心接口(发送SQL语句)
  SqlSession session = ssf.openSession();

  //根据id查询
  Data data=session.selectOne("com.selectData",2);
  System.out.println("ID:"+data.getId()+"\n"+"姓名:"+data.getName()+"\n"+"年龄:"+data.getAge());
  //查询所有
  List<Data> list = session.selectList("com.selectAll");
  System.out.println(list);
  for(int i = 0; i < list.size(); i++){
   System.out.println(list.get(i).toString());
  }

  //模糊查询
  List<Data> list1 = session.selectList("com.selectLike","t");
  System.out.println(list1);
  for(int i = 0; i < list1.size(); i++){
   System.out.println(list1.get(i).toString());
  }

  //分页查询
  Map map=new HashMap<>();
  map.put("start",0);
  map.put("length",2);
  List<Data> list2 = session.selectList("com.selectPage",map);
  System.out.println(list2);

  //分页查询
  RowBounds bunds=new RowBounds(0,1);
  List<Data> list3= session.selectList("com.selectPage1",null,bunds);
  System.out.println(list3);
  Data data1 = new Data("杨婷婷",24);
  int rows=session.insert("com.insertData", data1);
  System.out.println(rows);
  //释放资源
  session.close();
 }
}

实际上,只有select会自动提交,insert、update、delete并不会自动提交,所以问题在于代码

在这里插入图片描述

并未设置一个手动提交。

2. 两种解决办法

2.1 利用commit

在这里插入图片描述

增加一行代码以后,发现并没有什么用,证明问题不在这。运行后数据库中仍然无数据。

在这里插入图片描述

实际上,并不是commit方法不管用,而是添加代码位置不对,应该是session中有了相应指令再去提交,所以将session.commit()放到insert命令后,如下:

在这里插入图片描述

数据成功插入数据库。

2.2 openSession()方法参数问题

在openSession()方法中写入参数 true.

在这里插入图片描述

在这里插入图片描述

数据成功插入数据库,完美!

到此这篇关于mybatis中insert返回值为1,但数据库却没有数据的文章就介绍到这了,更多相关mybatis insert返回值为1内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot+element-ui实现多文件一次上传功能

    springboot+element-ui实现多文件一次上传功能

    这篇文章主要介绍了springboot+element-ui多文件一次上传功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • mybatis一级缓存和二级缓存的区别及说明

    mybatis一级缓存和二级缓存的区别及说明

    这篇文章主要介绍了mybatis一级缓存和二级缓存的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Java中JDom解析XML_动力节点Java学院整理

    Java中JDom解析XML_动力节点Java学院整理

    JDOM是一种解析XML的Java工具包。DOM适合于当今流行的各种语言,包括Java,JavaScripte,VB,VBScript,Perl,C,C++等。下面通过本文给大家介绍Java中JDom解析XML的方法,感兴趣的朋友一起学习吧
    2017-07-07
  • restTemplate发送get与post请求并且带参数问题

    restTemplate发送get与post请求并且带参数问题

    这篇文章主要介绍了restTemplate发送get与post请求并且带参数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java8特性使用Function代替分支语句

    Java8特性使用Function代替分支语句

    这篇文章主要介绍了Java8特性使用Function代替分支语句,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 利用Maven入手Spring Boot第一个程序详解

    利用Maven入手Spring Boot第一个程序详解

    这篇文章主要给大家介绍了关于如何利用Maven入手Spring Boot第一个程序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-02-02
  • Java8之lambda最佳实践_动力节点Java学院整理

    Java8之lambda最佳实践_动力节点Java学院整理

    在8 里面Lambda是最火的主题,不仅仅是因为语法的改变,更重要的是带来了函数式编程的思想,我觉得优秀的程序员,有必要学习一下函数式编程的思想以开阔思路
    2017-06-06
  • SpringBoot重写addResourceHandlers映射文件路径方式

    SpringBoot重写addResourceHandlers映射文件路径方式

    这篇文章主要介绍了SpringBoot重写addResourceHandlers映射文件路径方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • APT 注解处理器实现 Lombok 常用注解功能详解

    APT 注解处理器实现 Lombok 常用注解功能详解

    这篇文章主要为大家介绍了使用APT 注解处理器实现 Lombok 常用注解功能详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • @valid 无法触发BindingResult的解决

    @valid 无法触发BindingResult的解决

    这篇文章主要介绍了@valid 无法触发BindingResult的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12

最新评论