[017-1].第1节:Mybatis概述

1.持久层技术:

1.1.持久层解决方案:

  • 1.jdbc
  • 2.DBUtils:
    • DBUtils是一个小型的类库, 是一个jdbc的工具,主要是为了简化jdbc的代码使JDBC编程更加方便,简单。
    • 在JDBC编程中,资源的关闭是显式的,极易导致编程出现错误,DBUtils把这些工作抽象出来,使得程序员编程时仅需要关心正真的问题,即对数据库的增删改查
  • 3.JdbcTemplate
  • 4.MyBatis
  • 5.Hibernate(实现了JPA规范)
  • 6.jOOQ
  • 7.Guzz
  • 8.Spring Data(实现了JPA规范)
  • 9.ActiveJDBC

1.2.JDBC介绍:

a.JDBC操作流程

  • 1.加载数据库驱动
  • 2.通过驱动管理,获取数据库的连接
  • 3.编写sql语句,使用?表示占位符
  • 4.获取预处理statemennt,执行查询
  • 5.设计传参
  • 6.结果集处理
  • 7.释放资源,关闭数据库连接

b.使用JDBC编程的回顾

c.使用JDBC的缺陷

  • 1.代码比较多,开发效率低
  • 2.需要关注 Connection ,Statement, ResultSet 对象创建和销毁
  • 3.对 ResultSet 查询的结果,需要自己封装为 List
  • 4.重复的代码比较多些
  • 5.业务代码和数据库的操作混在一起,SQL语句写死在Java程序中,不灵活。改SQL的话就要改Java代码。违背开闭原则OCP
    在这里插入图片描述
    在这里插入图片描述

1.3.其他方案对比:

a.Appache的DBUtils与Spring中的JdbcTemplate

  • 1.DBUtils它和Spring中的JdbcTemplate很像,是对Jdbc的简单封装
    • JdbcTemplate是对Jdbc的简单封装的
    • [说明]以上这些都不是框架,是一种 JDBC是规范;Spring中的JdbcTemplateAppache的DBUtils都只是工具类
  • 2.JDBC -> Dbutils ->jdbcTemplate;使用这些工具类,功能简单,sql语句是编写在了java代码里面,耦合度较高,而框架是一个整体的解决方案,所以就诞生了很多框架

b.Hibernate特点:

  • 1.长难复杂SQL,对于Hibernate而言处理也不容易
  • 2.内部自动生产的SQL,不容易做特殊优化。
  • 3.基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。 导致数据库性能下降
    在这里插入图片描述
  • 4.Hibernate框架就是一个全自动化的ORM。使用Hibernate框架的时候,不需要程序员手动编写SQL语句,SQL语句可以自动生成。所以Hibernate是一个完全的全自动化的ORM框架。半自动步枪和全自动突击步枪,一个精度准火力不足,一个火力猛精度不够。

2.明确一些概念:

2.1.什么是框架:

  • 1.框架其实就是对通用代码的封装,提前写好了一堆接口和类,我们可以在做项目的时候直接引入这些接口和类(引入框架),基于这些现有的接口和类进行开发,可以大大提高开发效率。
  • 2.框架一般都以jar包的形式存在。(jar包中有class文件以及各种配置文件等)

2.2.三层架构:

  • 1.表现层(UI):直接跟前端打交互(一是接收前端ajax请求,二是返回json数据给前端
  • 2.业务逻辑层(BLL):一是处理表现层转发过来的前端请求(也就是具体业务),二是将从持久层获取的数据返回到表现层。
  • 3.数据访问层(DAL):直接操作数据库完成CRUD,并将获得的数据返回到上一层(也就是业务逻辑层)
    在这里插入图片描述

2.3.ORM思想:

a.什么是ORM:

  • 1.所谓的ORM是Dao层的一种思想,意思就是对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)

b.ORM有什么作用:

  • 1.ORM就是把数据库表和实体类及实体类的属性对应起来,然后我们在操作实体类就是相当于在操作数据库表
    • O就是Object:Java虚拟机中的Java对象
    • R就是Relation:关系型数据库
    • M就是Map:将Java虚拟机中的Java对象映射到数据库表中一行记录,或是将数据库表中一行记录映射成Java虚拟机中的一个Java对象。
      在这里插入图片描述
  • 2.ORM图示:
    在这里插入图片描述
    在这里插入图片描述

c.ORM思想主张:

  • 保存时,把java对象数据直接保存到关系型数据库对应的表中
  • 读取时,直接把关系型数据库表中的数据读成java对象
  • ORM思想使得开发者能更专注于业务的开发,能培养开发者的面向对象思想,体验java面向对象开发的便捷

在这里插入图片描述
在这里插入图片描述

d.基于ORM思想的框架:

  • 1.较流行的是:hibernate,mybatis,JPAS

3.MyBatis框架学习:

3.1.MyBatis下载

3.2.MyBatis概述:

  • 1.MyBatis最初是Apache的一个开源项目iBatis,后来iBatis3.x正式更名为MyBatis
  • 2.MyBatis是一个基于Java的持久层框架,其本质上就是对JDBC的封装,基于ORM的思想,完成对数据库的CRUD操作
  • 3.mybatis在java和sql之间提供了更加灵活的映射方案,可以将对数据表的操作(sql等)直接剥离,写到xml配置文件中,实现java代码的解耦
  • 4.iBATIS提供的持久层框架包括SQL Maps(sql映射)和Data Access Objects(DAOs)

3.3.MyBatis解决的问题(作用)

  • 1.MyBatis减轻使用 JDBC 的复杂性,不用编写重复的创建 Connetion , Statement ; 不用编写关闭资源代码。直接使用 java 对象,表示结果数据。让开发者专注 SQL的处理。 其他分心的工作由 MyBatis 代劳。
  • 2.MyBatis 可以完成:
    • 注册数据库的驱动,例如 Class.forName(“com.mysql.jdbc.Driver”))
    • 创建 JDBC 中必须使用的 Connection , Statement, ResultSet 对象
    • 从 xml 中获取 sql,并执行 sql 语句,把 ResultSet 结果转换 java 对象
    List<Student> list = new ArrayLsit<>();
    ResultSet rs = state.executeQuery(“select * from student”); 
    while(rs.next){
    Student student = new Student();
    student.setName(rs.getString(“name”)); student.setAge(rs.getInt(“age”));
    list.add(student);
    }
    
    • .关闭资源:ResultSet.close() , Statement.close() , Conenection.close()

3.4.MyBatis优点:

  • 1.MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
  • 2.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
  • 3.MyBatis支持XML开发和注解开发,我们可以用XML或注解用于配置和原始映射【为了保证sql语句的灵活,所以mybatis大部分是采用XML方式开发。】
  • 4.将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录
  • 5.体积小好学:两个jar包,两个XML配置文件
  • 6.完全做到sql解耦合
  • 7.提供了基本映射标签
  • 8.提供了高级映射标签
  • 9.提供了XML标签,支持动态SQL的编写

2.MyBatis操作数据库的原理:

2.1.MyBatis框架的结构:

在这里插入图片描述

  • 1.mybatis配置:
    • SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。
    • mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载
  • 2.通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂
  • 3.由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。
  • 4.mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。
  • 5.Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id
  • 6.Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。
  • 7.Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

2.2.MyBatis操作数据库的方式:

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. MyBatis的基本使用流程:以数据查询为例,首先需要定义一个Mapper接口,然后在XML文件中定义SQL语句,最后通过MyBatis的SqlSession执行SQL语句并返回结果。在这个流程中,还需要配置数据源、事务管理等相关内容。 2. MyBatis的高级特性:MyBatis不仅支持基本的SQL操作,还提供了许多高级特性,例如动态SQL、缓存、插件等。其中,动态SQL可以根据不同的条件生成不同的SQL语句,实现更加灵活的数据查询;缓存可以提高查询效率,减少数据库的访问次数;插件可以扩展MyBatis的功能,满足不同的需求。 ### 回答2: 答案1:根据myBatis知识构建思维导图的第一步是了解myBatis的基本概念和作用。myBatis是一种轻量级的持久层框架,它可以用于将Java对象与数据库中的数据进行映射。它的核心思想是通过SQL映射文件或注解将Java对象与SQL语句关联起来,从而实现数据库操作的简化和灵活性。在思维导图中,可以在中心点写上myBatis的概念和作用,并绘制出与其相关的分支点,如SQL映射文件、注解、Java对象、数据源、执行器、连接池等。 答案2:根据myBatis知识构建思维导图的第二步是了解myBatis的核心组件和工作原理。myBatis框架涉及的核心组件包括SqlSessionFactory、SqlSession、Mapper和Executor等。SqlSessionFactory是myBatis的核心接口,负责创建SqlSession对象。SqlSession是执行持久化操作的核心类,通过它可以执行DML和DQL操作。Mapper是myBatis的映射器接口,通过它可以将Java方法与SQL语句绑定。Executor是myBatis的核心执行器,负责将SQL语句发送到数据库执行,并返回结果。在思维导图中,可以在中心点写上myBatis的核心组件和工作原理,并绘制出与其相关的分支点,如SqlSessionFactoryBuilder、Configuration、MappedStatement、ResultHandler等。 ### 回答3: 答案1: 根据myBatis的知识构建思维导图可以将思维导图分为两个部分,一部分是myBatis的核心组件,另一部分是myBatis的使用流程。 在myBatis的核心组件中,包括配置文件和映射文件两个重要的组件。配置文件是用来配置myBatis的全局属性和数据库连接等信息的,而映射文件则定义了实体类与数据库表之间的映射关系。此外,还有SqlSessionFactory、SqlSession和Mapper等核心组件。 在myBatis的使用流程中,首先需要配置SqlSessionFactory,然后通过SqlSessionFactory创建SqlSession对象,再通过SqlSession对象执行CRUD操作。执行操作时可以通过Mapper接口将操作的SQL语句与方法进行映射,从而实现对数据库的操作。 答案2: 根据myBatis的知识构建思维导图可以将思维导图分为三个部分,分别是myBatis概述myBatis的核心组件和myBatis的使用流程。 在myBatis概述中,可以介绍myBatis的背景和目标,以及其与其他ORM框架的比较优势。同时还可以介绍myBatis的特点,如简单易学、灵活性强、性能优秀等。 在myBatis的核心组件中,可以详细介绍配置文件和映射文件的结构和作用,以及SqlSessionFactory、SqlSession和Mapper等核心组件的作用和使用方式。 在myBatis的使用流程中,可以介绍myBatis的整体使用流程,包括初始化myBatis、配置SqlSessionFactory、创建SqlSession对象以及通过SqlSession对象进行数据库操作的流程。同时还可以介绍使用Mapper接口进行数据库操作的流程,并举例说明具体的操作步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值