Mybatis(基础)

本文介绍了Mybatis的基础知识,包括ORM概念、Mybatis与Hibernate的对比,以及Mybatis的使用、核心API、配置文件详解,强调了Mybatis的灵活性和可优化性。
摘要由CSDN通过智能技术生成

Mybatis入门

什么是ORM

对象关系映射,它的作用是在关系型数据库和对象之间作一个映射处理。

为什么使用ORM

首先我们应该知道JDBC的缺点:
需要手动的完成面向对象的 Java 语言、面向关系的数据库之间数据的 转换,代码繁琐无技术含量,影响了开发效率。

那么疑问来了,面向关系的数据库之间数据的转换必须要做,这个转换操作是否可以不由开发者来制作呢?
可以。我们使用ORM去解决这个问题。ORM相当于在面向对象语言和关系数据库之间搭建一个桥梁。

什么是Mybatis

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 是一个半自动 ORM 框架,其本质是对 JDBC 的封装。使用 MyBatis 重点需要程序员编写 SQL 命令,不需要写JDBC 代码。

什么是Hibernate

是一个全自动的 ORM 框架。Hibernate 创建了 Java 对象和数据库表 之间的完整映射,可以完全以面向对象的思想来操作数据库,程序员不需要手写 SQL 语句.

Mybaits和Hibernate对比

Hibernate是全自动的,无需手写SQL语句;而 MyBatis 中还需要手写 SQL 语句,所以是半自动化的,工作量要大于 Hibernate。

但为什么半自动化的 Mybatis 比自动化的 Hibernate 受欢迎?
正因为Mybatis可以自定义SQL语句,相对于Hibernate而言,Mybatis可以由程序员生成更为复杂的SQL语句,可以更加精确的定义SQL语句,提高代码的性能,所以它的灵活性和可优化性比Hibernate高。

小结:
总之,因为 MyBatis 具有封装少、映射多样化、支持存储过程、可以进行 SQL 语句优 化等特点,符合互联网高并发、大数据、高性能、高响应的要求,使它取代 Hibernate 成 为了 Java 互联网中首选的持久框架。而对于对性能要求不高的比如内部管理系统、ERP 等 可以使用 Hibernate。

Mybatis的使用

下载地址

下载链接
下载后的目录:
在这里插入图片描述
lib文件夹内:

在这里插入图片描述

jar包的介绍

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

核心API介绍

核心API

SqlSessionFactoryBuilder
SqlSessionFactoryBuilder 的作用是使用构建者模式创建 SqlSessionFactory 接口 对象。

SqlSessionFactory
它的创建成功与否直接决定了Mybatis是否可以正常启动。
SqlSessionFactory 可以被认为是一个数据库连接池,它的作用是创建 SqlSession 接口对象。

SqlSession
如果说 SqlSessionFactory 相当于数据库连接池,那么 SqlSession 就相当于一个数 据库连接(Connection 对象),你可以在一个事务里面执行多条 SQL,然后通过它的 commit、rollback 方法提交或者回滚事务。

Mapper
映射器。由一个 Java 接口和 XML 文件(或者注解构成),需要给出对应的 SQL 和映 射规则,负责发送 SQL 去执行并返回结果。

核心API的工作流程

在这里插入图片描述

生命周期

SqlSessionFactoryBuilder :
该类用来创建 SqlSessionFactory 对象,当 SqlSessionFactory 对象被创建后, SqlSessionFactoryBuilder 就失去了作用,所以它只能存在于创建 SqlSessionFactory 的 方法中,而不要让其长期存在。因此 SqlSessionFactoryBuilder 实例的最佳作用域是方法 作用域。

SqlSessionFactory :
SqlSessionFactory 的生命周期存在于整个 MyBatis 的应用之中,所以一旦创建了 SqlSessionFactory,就要长期保存它,直至不再使用 MyBatis 应用,所以可以认为 SqlSessionFactory 的生命周期就等同于 MyBatis 的应用周期。由于 SqlSessionFactory 是 一 个 对 数 据 库 的 连 接 池 , 所 以 它 占 据 着 数 据 库 的 连 接 资 源 。 如 果 创 建 多 个SqlSessionFactory,那么就存在多个数据库连接池,这样不利于对数据库资源的控制,也 会导致数据库连接资源被消耗光,出现系统宕机等情况,所以尽量避免发生这样的情况。因 此 SqlSessionFactory 是一个单例,让它在应用中被共享。

SqlSession :
SqlSession 应该存活在一个业务请求中,处理完整个请求后,应该关闭这条连接,让 它归还给 SqlSessionFactory,否则数据库资源就很快被耗费精光,系统就会瘫痪,所以 用 try...catch...finally... 语句来保证其正确关闭。
 所以 SqlSession 的最佳的作用域是请求或方法作用域。

Mapper: 
由于 SqlSession 的关闭,它的数据库连接资源也会消失,所以它的生命周期应该小 于等于 SqlSession 的生命周期。Mapper 代表的是一个请求中的业务处理,所以它应该 在一个请求中,一旦处理完了相关的业务,就应该废弃它。

Mybatis 的配置文件

官方讲解配置文件的跳转链接

在Mybatis的配置内有两种配置文件:

  • 全局配置文件
  • 映射配置文件

全局配置文件

全局配置文件的名称是自定义的,在 JavaProject 项目中需要放到 src 目录下。
全局配置文件的作用是完成一些全局性的配置,如:对 Mybatis 框架的设置、别名设置、 环境设置、指定映射配置文件等相关配置。

基本格式:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
  <configuration> 

  </configuration>
properties 标签

Mybatis 配置文件中的属性定义。properties 标签中允许内部定义属性,也可以是外部的 properties 文件定义属性。无论是内部定义还是外部定义,都可以使用${name}获取值。

配置文件中内部定义

 <properties> 
	<property name="jdbc.driver" value="com.mysql.jdbc.Driver"/> 
	<property name="jdbc.url" 
	value="jdbc:mysql://localhost:3306/bjsxt"/>
  	<property name="jdbc.username" value=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值