1、主要内容
1.Mybatis引入
2.Mybatis的初次使用
3.Mybatis的配置细节
4.Mybaits完成DML全部操作(CURD)
2、学习目标
知识点 | 要求 |
框架的认识 | 理解 |
ORM 映射关系 | 理解 |
搭建MyBatis环境 | 掌握 |
核心配置文件 | 掌握 |
mapper映射文件 | 掌握 |
log4j的使用 | 掌握 |
事务,别名,映射文件加载 | 掌握 |
使用外部属性文件 | 掌握 |
Mybatis的三种查询方式 | 掌握 |
Mybatis传递参数的三种方式 | 掌握 |
Mybatis完成DML操作 | 掌握 |
一、Mybatis入门
1.1 回顾JDBC的缺点?
1、使用JDBC连接数据库没有办法实现 java 代码和 sql 语句之间的解耦.
2、使用JDBC连接数据库在接受查询的时候,需要自己手动写对象映射关系,效率低。
3、JDBC默认未使用连接池,如果使用连接池,需要我们自己书写,增加工作量.
1.2 认识框架
框架(FrameWork)是一个框子—指其约束性,也是一个架子—指其支撑性。
框架是为了解决特定问题而定义的一系列接口和实现类,通过这些类和接口协调来完成一系列的程序实现。
有了框架:我们就可以集中精力进行业务逻辑的开发而不用去关心它的技术实现以及一些辅助的业务逻辑。
使用框架:可以保证减少开发时间,降低开发难度,并且还能保证设计质量。
总之,框架是一个半成品,已经对基础的代码进行了封装,并提供相应的API,开发者使用框架是直接调用封装好的API可以省去很多代码编写,从而提高工作效率和开发速度.
通用开源框架都有 jar 包和 api文档和 源代码三部分组成.
1.3 认识ORM
ORM, Object-Relationl Mapping,对象关系映射。它的作用是在关系型数据库和对象之间作一个映射。
可以在对象模型和关系型数据库的表之间建立一座桥梁,程序员使用 API 直接操作 JavaBean 对象就可以实现数据的存储、查询、更改和删除等操作。
常用ORM框架:
1. Hibernate
Hibernate是一个全表映射的框架(全自动)。开发者只要定义好持久化对象到数据库表的映射关系,就可以通过 Hibernate 框架提供的方法完成持久层操作。开发者并不需要熟练地掌握 SQL 语句的编写,Hibernate 框架会根据编制的存储逻辑,自动生成对应的 SQL,并调用 JDBC 接口来执行。
2. MyBatis
MyBatis是一个半自动ORM
框架,MyBatis仅有基本的字段映射,仍然需要通过手写SQL来实现和管理。
MyBatis本是Apache的一个开源项目iBatis,2010年这个项目有Apache Software Foundation 迁移到了 Google Code,切改名为 MyBatis。2013年11月迁移到GitHub。
MyBatis 是一款秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录.
3. MyBatis与Hibernate的对比
MyBatis需要手写SQL语句,半自动化ORM,工作量大于Hibernate,为什么比全自动的Hibernate还受欢迎 ?
Hibernate 学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate需要开发者的经验和能力都很强才行。
1.生成复杂的sql语句很难实现,或者实现后导致性能丢失。
2.对数据库特定sql优化时,不友好。
3.处理复杂的业务数据时,尤其是级联查询的时候,会导致数据查询和加载很慢。
自身也存在一些缺点导致其只适合在场景不太复杂且对性能要求不高的项目中使用。
MyBatis入门简单,上手快。
1.正是由于半自动化自定义SQL,所以比较灵活,可以更加精确的定义SQL。
2.SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化。
3.便于程序升级迭代。
同样功能的两条sql语句的性能可能相差十几倍到几十倍,在高并发、快响应要求下的互联网系统中,手写SQL更合适.
总之:
因为MyBatis具有相对轻量级,封装少,映射多样化、支持存储过程、可以进行SQL语句优化等特点,符合互联网高并发、大数据、高性能、高响应的要求,使它取代了Hibernate成为了Java互联网中首选的持久框架。而对于性能要求不高的比如内部管理系统、ERP等可以使用Hibernate.