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

Mybatis基础

JDBC的过程:

  • 1.加载驱动
  • 导入 JDBC 连接数据库的 jar 包,利 用 CLASS.forName 加载驱动;
  • 2.获取连接
  • 利用 DriverManager 获取 Connection,然后创建 Statement;
  • 3.执行SQL语句
  • 利用 Statement 执行 SQL 语句并结合 ResultSet 处理结果集映射 Java 对象;
  • 4.关闭资源
  • 先开后关的顺序关闭 ResultSet, Statement,Connection 等资源。

JDBC的弊端

  • 硬编码
  • SQL语句存在Java代码中,不能很好的分离数据库语句和 Java语句,造成代码不易维护;
  • SQL参数固定
  • SQL语句的参数固定,使得SQL语句不灵活,无法满足多变的场景。
  • 代码重复度高
  • 大量的重复代码,以 ResultSet 为例,每次都需要重复解析结果集;
  • 底层技术
  • JDBC属于底层的技术,不支持 分布式,缓存等技术,对于复 杂场景的应对不好;

mybatis 解决了jdbc 的问题:

  • 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。
  • 解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接。
  • Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。
  • 解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。
  • 向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。
  •  解决:Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型。
  • 对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象 解析比较方便。
  • 解决:Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型

什么是ORM模型

ORM 模型是数据库的表和简单 Java 对象(Plain Ordinary Java Object,简称 POJO)的映射关系模型,主要解决数据库数据和 POJO 对象的相互映射。

Java对象 POJO 对象(Plain Ordinary Java Object): 简单的 Java 对象,实际就是普通 JavaBeans。

映射配置 配置分为:类与数据库中表的映射;对象与表中记录的映射;类的属性与数据库中 表的字段的映射。

数据库 按照数据结构来组织、存储 和管理数据的仓库,ORM 模型中最底层的内容。

常见的ORM模型

Hibernate Hibernate 是一个 全自动 的ORM 模 型,Hibernate 可以自动生成 SQL 语 句,自动执行.

MyBatis MyBatis 是一款 半自动 的ORM 模型,它支持定 制化SQL、存储过程以及高级映射.

Mybatis和hibernate 区别:

1.Hibernate是全自动化ORM;

   Mybatis是半自动化ORM。

2. Hibernate简化dao层,不用考虑SQL语句的编写和结果映射,重点放在业务逻辑上;

  Mybatis需要手写SQL语句以及结果映射。

3. Hibernate是一个重量级的框架,内部生成SQL语句,反射操作太多,导致性能下降;

 Mybatis是一个轻量级的框架,需要自己写sql语句,有较少的反射操作。

4. Hibernate 不方便做SQL优化,遇到较复杂的SQL语句需要绕过框架实现复杂, 对多字段的结构进行部分映射困难;

Mybatis 不仅可以做SQL优化还可以SQL与Java分离,还可以自行编写映射关系, 复杂的SQL语句Mybatis效率更高

Mybatis优势:

  • 可以进行更细致的SQL优化;
  • 容易掌握

Hibernate优势;

  • dao层开发比mybatis简单,mybatis需要维护SQL和结果映射 hibernate数据库移植性好

什么是MyBatis

MyBatis是一款ORM模型支持定制化SQL、存储过程以及高级映射。可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录.

半自动化

  •  支持定制化SQL、存储过程以及高级映射;

集成方便

  • 不仅方便 Spring 等 JavaEE 框架的集成,还与其他 ORM 模型集成也很方便

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 9000字干货:从消息流平台Serverless之路,看Serverless标准演进
  • Web3.js 4.x版本事件监听详解:从HTTP到WebSocket的迁移
  • C# 设计倒计时器、串口助手开发
  • Geoscene Pro的数据管理
  • 面试场景题系列--(2)短 URL 生成器设计:百亿短 URL 怎样做到无冲突?--xunznux
  • [Spring] Spring配置文件
  • 秋招突击——7/29——操作系统——网络IO
  • 系统移植(八)u-boot源码解析(未整理)
  • 聊聊基于Alink库的主成分分析(PCA)
  • K210视觉识别模块学习笔记8:Mx_yolo3本地模型训练环境搭建_部署模型到亚博canmv(失败)
  • 2-48 基于matlab的EM算法聚类可视化程序
  • 【面试题】喔影网络科技面试题复盘
  • Unity Android接入SDK 遇到的问题
  • springcloud RocketMQ 客户端是怎么走到消费业务逻辑的 - debug step by step
  • 19.延迟队列优化
  • 时间复杂度分析经典问题——最大子序列和
  • [译]CSS 居中(Center)方法大合集
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • conda常用的命令
  • CSS相对定位
  • Date型的使用
  • E-HPC支持多队列管理和自动伸缩
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • HashMap剖析之内部结构
  • JavaScript对象详解
  • Java的Interrupt与线程中断
  • java第三方包学习之lombok
  • Java多态
  • js继承的实现方法
  • leetcode388. Longest Absolute File Path
  • mysql外键的使用
  • passportjs 源码分析
  • PV统计优化设计
  • ReactNativeweexDeviceOne对比
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • v-if和v-for连用出现的问题
  • Vue--数据传输
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 后端_ThinkPHP5
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 将回调地狱按在地上摩擦的Promise
  • 解析带emoji和链接的聊天系统消息
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 深入 Nginx 之配置篇
  • 在Unity中实现一个简单的消息管理器
  • 如何在招聘中考核.NET架构师
  • 数据可视化之下发图实践
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • #ifdef 的技巧用法
  • #if等命令的学习
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (poj1.3.2)1791(构造法模拟)
  • (pt可视化)利用torch的make_grid进行张量可视化