1.课程介绍
为什么需要Mybatis; (了解)
初识Mybatis; (了解)
Mybatis入门; (掌握)
Mybatis工具类; (掌握)
Mapper映射器; (掌握)
Mybatis使用细节; (掌握)
SSM框架: Spring +springmvc + mybatis[配置]—笔记
dao层代码一个变化:讲道理:重点
2.为什么需要Mybatis
1.来看一段之前JDBC写的代码:
2.问题:
(1)sql写在JAVA代码中,修改sql必须修改代码,耦合度太高;
(2)代码量多,重复性代码过多;
(3)手动设置参数,并且如果是查询操作,还需要手动转换结果,麻烦;
(4)连接资源手动关闭,麻烦【以后和Spring整合就不需要手动关闭连接了】;
3.初识Mybatis
3.1.Mybatis是什么
1. MyBatis是一个ORM的数据库持久化框架;
2. Mybatis底层还是原生的JDBC代码,对JDBC代码的封装;
3.1.1.什么是框架
- 框架(Framework)是一个框子:指其约束性。也是一个架子:指其支撑性;
程序中的框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案;
程序中的框架其实是一系列jar包(一系列.class文件)的组合;
框架是一个半成品,并没有解决具体的问题,但是有了框架之后,不需要从零起步,提高了开发效率;
框架通常是为了解决某一个领域的问题而产生;
适用于团队开发,统一规范,方便维护;
综上所述:所谓的框架就是提供的一些支撑结构,通过这些支撑结构,可以解决具体的问题,但是在使用过程中要遵循一定的规范;
3.1.2.什么叫数据库持久化
- 数据持久化就是将内存中的数据模型转换为存储模型,即把内存中的数据保存到数据库中;
- 常见的数据持久化分为磁盘持久化和数据库持久化;
- Java中最简单的就是使用原生的jdbc代码来完成数据库持久化,但是这种方式有很多问题;
3.1.3.什么是ORM
ORM:对象关系映射(Object Relational Mapping,简称ORM):是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术;
3.1.3.1.ORM框架映射方式
ORM框架操作数据库关系方式有很多种,常用的有两种:
第一种:Sql操作方式(半映射或半自动):把SQL配置到配置文件中,通过不同SQL中完成对象实体和数据库关系相互转换的操作(Mybatis的实现方式)
第二种:完整映射:直接使用对象实体和数据库关系进行映射,不用写SQL(简单的操作),由框架自己生成(JPA、Hibenate实现方式)
3.1.3.2.ORM原理
- 以一定的映射方式,把实体模型和数据库关系进行映射;
- ORM框架启动时加载这些映射和数据库配置文件连接数据库;
- ORM通过对最原生jdbc的封装,并提供更加便利的操作API;
- Dao通过ORM提供的便捷API以对象的方式操作数据库关系;
3.1.3.3.常见的ORM持久化框架
JPA:本身是一种ORM规范,不是ORM框架,由各大ORM框架提供实现;
Hibernate(完整映射):目前流行的ORM框架,设计灵巧,性能一般(自己去控制性能,不是很好控制),文档丰富。Hibernate是一个完整的ORM框架,常规CRUD我们不需要写一句SQL;
MyBatis(半映射):本是apache的一个开源项目iBatis,提供的持久层框架包括SQL Maps(Mapper)和Dao,允许开发人员直接编写SQL,更加灵活;
3.2.`Mybatis的起源
Mybatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github;
iBatis一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架;
Mybatis 包括SQL Maps(Mapper)和Dao;
3.3.Mybatis的优势
- sql语句与代码分离,存放于xml配置文件中,方便维护;
Mybatis消除了几乎所有的JDBC代码和手工设置参数以及结果集的检索;
提供XML标签,支持编写动态SQL,代替编写逻辑代码;
面试题:Mybatis相较于jdbc的优点?
1.把sql语句从java代码中抽取出来,方便维护,并且修改sql时不用修改java代码;
2. 不用手动设置参数和对结果集的处理,让我们操作数据库更加简单;
3. 与JDBC相比,大大减少了代码量,提高了开发效率;
4.MyBatis入门
4.1.导入相应的jar包
4.2.准备相应的表
4.2.1.准备相应的domain
1.创建一个Product对象,和数据库的表对应
2.类的名称和类型都和我们的product表相对应匹配
public class Product { private Long id; //商品名称 private String productName; //品牌 private String brand; //供应商 private String supplier; //零售价 private BigDecimal salePrice; //进价 private BigDecimal costPrice; //折扣价 private Double cutoff; //商品分类编号 private Long dir_id; //提供getter与setter... }
4.2.2.product的dao层准备
接口和空实现类
/** * 商品的持久操作 * @author Administrator */ public interface IProductDAO { /** * 添加一个商品 */ void save(Product p); /** * 更新一个商品 */ void update(Product p); /** * 删除一个商品 */ void delete(Long id); /** * 得到一个商品 */ Product get(Long id); /** * 得到所有商品 */ List<Product> findAll(); }
4.2.3.测试先行
写代码要测试,这是一个好习惯
4.3.入门实现
4.3.1.实现步骤分析
一切准备就绪。接下来就是开始使用MyBatis了。但是问题来了,怎么用呢?
查看文档:该文档虽然只有50多页,但是已经足够咱们学习了。
先来入个门吧:入门开始,除了介绍什么是MyBatis之后,就在说一个核心对象:SqlSessionFactory,接下来,咱们就是要想方设法拿到这个核心对象;
那SqlSessionFactory对象怎么拿到:直接找到文档中的从 XML 中构建 SqlSessionFactory这一小节开始即可;
要获取SqlSessionFactory,我们需要准备一个核心的Mybatis-config.xml文件,然后通过SqlSessionFactoryBuilder来创建,所以步骤:
(1)创建Mybatis核心配置文件(Mybatis-config.xml),并配置环境;
(2)加载核心配置文件
(3)创建一个SqlSessionFactoryBuilder对象;
(4)通过SqlSessionFactoryBuilder对象构建一个SqlSessionFactory对象
(5)创建Mapper映射文件,并配置;
(6)通过SqlSessionFactory获取SqlSession执行映射SQL
javaweb实训第六天下午——Mybatis基础(2)https://developer.aliyun.com/article/1415613?spm=a2c6h.13148508.setting.30.6e1a4f0eQzpjQW