MyBatis(一)简介

1,JDBC编程和ORM模型

JDBC的弊端:

(1)硬编码:SQL语句存在Java代码中,不能很好的分离数据库语句和Java语句,造成代码不易维护。

(2)SQL参数固定:SQL语句的参数固定,使得SQL语句不灵活,无法满足多组的场景。

(3)代码重复度高:大量的重复代码,以ResultSet为例,每次都需要重复解析。

(4)底层技术:JDBC属于底层的技术,不支持分布式,缓存等技术,对于复杂的场景应对不好。

ORM模型:

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

JAVA对象:POJO对象(Plain Ordinary JAVA Object): 简单的Java对象,JavaBeans。

映射配置类型:

(1)类与数据库中表的映射

(2)对象与表中记录的映射

(3)类的属性与数据库中表的字段的映射

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

2,常见的ORM模型

Hibernate:全字段模型

MyBatis:半自动模型

3,MyBatis和Hibernate的区别

MyBatis需要程序员自己编写SQL语句,可以通过XML和注解两种方式。无法做到数据库无关性。

Hibernate对象/映射能力强,数据库无关性好,对于数据库模型要求高的软件,开发可以节省很多代码,提升效率。

4,Mybatis对于JDBC的优化

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

(4)对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。

解决:Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。

5,MyBatis概念

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

特点:

(1)半自动化:支持定制SQL、储存过程以及高级映射;

(2)集成方便:不仅方便 Spring 等 JavaEE 框架的集成,还与其他ORM 模型集成也很方便。

6,MyBatis的操作流程

(1)加载配置文件

InputStream istem = Resources.getResourceAsStream("mybatis-config.xml");

(2)构建sqlsession工厂对象(工厂模式)

SqlSessionFactory build = new SqlSessionFactoryBuilder().build(istem);

(3)工厂生成sqlsession对象

SqlSession sqlsession = build.openSession();

(4)sqlsession的方法

List<Student> slist = sqlsession.selectList("haha");

(5)释放资源

sqlsession.close();

XML文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<mapper namespace="com.ape.mapper.StudentMapper">
		<!-- 类路径 -->
	 <select id="haha" resultType="Student">
		select * from student
	 </select>
	 	 
</mapper>

7,MyBatis的生命周期

(1)读取MyBatis配置文件:mybatis-config.xml为MyBatis的全局配置文件,配置了MyBatis的运行环境等信息,例如数据库连接信息。

(2)加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。

(3)构造会话工厂:通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory。

(4)创建会话对象:由会话工厂创建 SqlSession 对象,该对象中包含了执行 SQL 语句的所有方法。

(5)Executor 执行器:MyBatis 底层定义了一个 Executor 接口来操作数据库,它将根据 SqlSession 传递的参数动态地生成需要执行的 SQL 语句,同时负责查询缓存的维护。

(6)MappedStatement 对象:在 Executor 接口的执行方法中有一个MappedStatement 类型的参数,该参数是对映射信息的封装,用于存储要映射的 SQL语句的 id、参数等信息。

(7)输入参数映射:输入参数类型可以是 Map、List 等集合类型,也可以是基本数据类型和 POJO 类型。输入参数映射过程类似于 JDBC 对 preparedStatement 对象设置参数的过程。

(8)输出结果映射:输出结果类型可以是 Map、 List 等集合类型,也可以是基本数据类型和 POJO 类型。输出结果映射过程类似于 JDBC 对结果集的解析过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手可摘鑫晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值