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

Java框架学习 | MyBatis

问题导向学习MyBatis

  1. 为什么要有MyBatis框架?

    1. 避免Java开发者直接使用 JDBC重复做数据库操作,同时更便捷地实现想要的数据库相关功能,让Java专注于开发业务。

  2. MyBatis框架如何实现该目的?

    1. MyBatis是半自动化持久层ORM框架,想要实现什么数据库操作都能够通过使用MyBatis这个工具高效的实现。

      1. Object Retional Mapping对象关系映射

    2. 开发者直接编辑Java代码调用对应的SQL语言,MyBatis通过传参的方式实现在数据库与Java间的交互。

    3. MyBatis相当于厨房中的各种工具,刀、锅和电饭煲等,能够帮助做饭者更高效地做完饭。

      1. MyBatis-Plus相当于是做饭者的私人助理,能够直接帮做饭者完成需要做的简单任务/数据库操作。

  3. MyBatis与Maven间有什么关系?

    1. Maven是Java项目构建和依赖管理的框架,其通过配置POM能够实现自动添加Jar包的功能,并且其能够存储到本地仓库,当多个Java项目同时使用同个jar包时,不需要反复下载只需要通过POM配置即可,方便并且提高了复用率。

    2. 同时,Maven有继承和聚合功能,继承能够帮助项目的扩展减少重复工作,聚合能够将好几个独立的项目从下至上的管理,统一版本号和增加通用的功能。

    3. 没有直接的关系。但能够使用Maven对MyBatis进行项目构建、打包和依赖管理。

MyBatis框架安装使用步骤

  1. 导入jar包

    1. 创建新maven帮助构建SSM框架

    2. 配置POM文件,导入:MySQL与Java连接包、MyBatis包和junit测试包

      1. 通过https://mvnrepository.com/搜索关键词选择相关版本的包;

      2. 复制相关gav坐标(唯一标识)导入POM文件;

      3. 2021.2的IDEA需要手动更新包导入;

  2. 在主方法mian的Java中创建相对应的mapper(映射)和pojo文件;

    1. pojo中创建类,定义对象、相关构造器和设置获取方法;

    2. mapper里根据pojo文件创建的类,创建相应的接口和方法;

  3. 在主方法mian的resources中的操作

    1. 在mapper映射文件中创建XML配置文件;

      1. 配置上mapper创建的接口中的方法名和pojo中类名;

      2. 根据接口信息配置相应信息

        1. 映射文件名与接口名一致;

        2. 映射文件namespace与接口全类名一致;

        3. 映射文件SQL的Id与接口的方法名一致。

        4. 撰写想要的SQL操作语句里的调用参数要对应;

    2. 创建mybatis-config.xml文件

    3. 配置数据源:数据库驱动、数据库连接地址、用户名、密码等;

    4. 同时写入mapper映射中创建的XML配置文件;

  4. 在test的java文件下创建相应Test类

    1. 创建输入流InputStream通过Resources.getResourceAsStream()方法获取mybatis-config.xml信息

    2. 创建SqlSessionFactory、Sqlsession对象和EmployeeMapper接口对象获取相应的SQL操作结果;

      1. 配置SqlSessionFactory:SqlSessionFactory是MyBatis的关键对象,负责创建SqlSession对象。SqlSessionFactory可以通过XML配置文件或者Java代码进行配置。

      2. 创建SqlSession对象:SqlSession是MyBatis与数据库交互的关键对象。SqlSession对象提供了数据库操作的API,包括查询、插入、更新和删除等操作。

    3. 并创建新的实例对象读取相应的SQL操作结果;

      1. 执行SQL语句:在SqlSession对象中调用相应的方法执行SQL语句。MyBatis会将SQL语句转换为相应的Java对象,方便使用。

      2. 返回结果:执行SQL语句后,MyBatis会将查询结果封装为Java对象,然后返回给调用方。

  5. 关闭SqlSession对象:最后,需要关闭SqlSession对象,释放资源。

http://www.lryc.cn/news/31231.html

相关文章:

  • Cookie+Session详解
  • CAPL脚本要注意区分elcount和strlen求数组长度的区别,不然要吃大亏
  • CSS常用选择器
  • Registry与DGC的攻击利用
  • 赛道持续降温!又一家自动驾驶公司裁员,市值曾超50亿美元
  • 路径规划 | 图解动态A*(D*)算法(附ROS C++/Python/Matlab仿真)
  • GraphCut、最大流最小割定理
  • Word文档的密码忘记了怎么办?
  • Java分布式事务(二)
  • 游戏项目中的程序化生成(PCG):算法之外的问题与问题
  • 【C++】位图+哈希切割+布隆过滤器
  • python实现网络游戏NPC任务脚本引擎(带限时任务功能)
  • C语言的原子操作(待完善)
  • JavaScript Boolean 布尔对象
  • 删除链表元素相关的练习
  • 3DEXPERIENCE Works 成为了中科赛凌实现科技克隆环境的催化剂
  • 少儿编程 电子学会图形化编程等级考试Scratch一级真题解析(选择题)2022年12月
  • 【完整版】国内网络编译,Ambari 2.7.6 全部模块源码编译笔记
  • HTML 颜色值
  • RabbitMQ-消息的可靠性投递
  • 华为OD机试题 - 最小叶子节点(JavaScript)| 含思路
  • 嵌入式系统硬件设计与实践(开发过程)
  • 入门vue(1-10)
  • C#开发的OpenRA的游戏主界面怎么样创建3
  • 秒懂算法 | 基于主成分分析法、随机森林算法和SVM算法的人脸识别问题
  • QML Loader(加载程序)
  • C++——类型转换
  • vue3:生命周期(onErrorCaptured)
  • vue过滤器
  • I/O模型