当前位置: 首页 > news >正文

MyBatis之测试添加功能

1.

首先Mybatis为我们提供了一个操作数据库的会话对象叫Sqlsession,所以我们就需要先获取sqlsession对象:

//加载核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//获取sqlSessionFactoryBuilder(是我们提供sqlSession的一个工厂对象的一个构建对象)
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//获取sqlSessionFactory(获取sqlSession工厂对象)
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//获取sqlSession(获取Mybatis为我们提供一个操作数据库的会话对象)
SqlSession sqlSession = sqlSessionFactory.openSession();

补充:

- SqlSession:代表Java程序和数据库之间的会话。(HttpSession是Java程序和浏览器之间的会话)

- SqlSessionFactory:是“生产”SqlSession的“工厂”

- 工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的相关代码封装到一个“工厂类”中,以后都使用这个工厂类来“生产”我们需要的对象

2.

然后通过SqlSession来实现我们当前Mybatis中的功能,再访问一个sql语句 去执行sql语句来获得一个结果。再者Mybatis是面向接口编程,我们调用mapper接口中的方法,它就会自动的匹配一个sql语句来执行,所以我们接下来获取mapper接口的对象(一个接口我们想创建对象就需要实现类,但之前我们并没有实现类)

传进去的参数是类型的一个class对象,然后这个类型的泛型是T,而这个方法的返回值是我们当前的T对象,即当我们传进去一个类型的class对象后,它会帮助我们获取这个类型的实例化对象。

最后总结一下流程:

每当我们去调用mapper接口中的方法,

他就根据我们的mapper接口找到映射文件,

然后根据当前调用的方法找到我们的sql语句

增删改受影响的是行数。当sql语句执行成功后,但在数据库中没有添加数据。

这里是(transactionManager)事务管理器,type=JDBC表示用u最原始的JDBC方式来管理事务,所以说现在事务的提交或者回滚都需要手动处理,即造成在数据库中没有添加数据。

补充:

优化1

优化2

通过日志功能来监测当前实现功能他所执行的sql。

增加修改数据功能

先在mapper接口写好方法,然后通过方法去映射文件,再编写好sql语句。

特殊的查询功能

首先有返回值(一个对象或者一个对象的集合)

补充:

  1. 查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系  

    - resultType:自动映射,用于属性名和表中字段名一致的情况  

    - resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况(自动的把我们当前查询的结果的字段名来作为属性名进行赋值,如果能匹配就赋值不能就不赋值)

  2. 当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值

http://www.xdnf.cn/news/883225.html

相关文章:

  • Spark大数据分析与实战笔记(第五章 HBase分布式数据库-03)
  • Vim 设置搜索高亮底色
  • 007-nlohmann/json 项目应用-C++开源库108杰
  • 实验分享|小车模型尾部涡流的PIV可视化实验
  • html-<abbr> 缩写或首字母缩略词
  • html文字红色粗体,闪烁渐变动画效果
  • Cilium动手实验室: 精通之旅---4.Cilium Gateway API - Lab
  • Linux 进程管理学习指南:架构、计划与关键问题全解
  • 【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
  • 神经网络与深度学习 网络优化与正则化
  • 【美团技术团队】从实际案例聊聊Java应用的GC优化
  • 5.Declare_Query_Checking.ipynb
  • 《状压DP》题集
  • AWS Elastic Beanstalk + CodePipeline(Python Flask Web的国区CI/CD)
  • React Hooks 基础指南
  • Excel自动分列开票工具推荐
  • Excel-vlookup -多条件匹配,返回指定列处的值
  • 初探Service服务发现机制
  • 缓解停车难:4G地磁如何重构车位分配?
  • 前端开发面试题总结-CSS篇
  • 第11期_网站搭建_极简云 单码网络验证修复版本 虚拟主机搭建笔记
  • Linux下如何使用shell脚本导出elasticsearch中某一个index的数据为本地csv文件
  • SQL Server 2025 预览版新功能
  • 深入解析与解决方案:处理Elasticsearch中all found copies are either stale or corrupt未分配分片问题
  • minio入门学习
  • 探索未知惊喜,盲盒抽卡机小程序系统开发新启航
  • 【图像处理入门】5. 形态学处理:腐蚀、膨胀与图像的形状雕琢
  • 作为过来人,浅谈一下高考、考研、读博
  • Neovim - 常用插件,提升体验(三)
  • 2024年09月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试