学习Mybatis及其简单配置

目录

JDBC的弊端

为什么要有ORM模型?

什么是ORM模型?

Mybatis和hibernate 区别:

Mybatis解决了jdbc的问题

为什么选择myBatis(优势)?

什么是MyBatis

主配置文件(config文件)

Mapper文件

创建sqlSession

Mybatis的生命周期:

MyBatis配置文件的层级结构:

元素:

元素:

元素:

元素:


JDBC的弊端

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

代码重复度高:大量的重复代码,以 ResultSet为例,每次都需要重复解析结果集;


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

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

为什么要有ORM模型?

Java类         映射关系           数据库表

属性1                             字段1

属性2                             字段2

什么是ORM模型?

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

Java对象:pojo对象:简单的java对象,实际就是普通的javaBeans

映射配置:配置分为:类与数据库中表的映射,对象与表中记录的映射,类的属性与数据库中表的字段的映射

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

常见的orm模型:

Hibernate:是一个全自动的orm模型,可以自动生成sql语句,自动执行

Mybatis:是一款半自动的orm模型,它支持定制化sql,存储过程以及高级映射。

Mybatis和hibernate 区别:

1. Hibernate是全自动化ORM; Mybatis是半自动化ORM。

2. Hibernate简化dao层,不用考虑SQL语句的编写和结果映射,重点放在业务逻辑上;

Mybatis需要手写SQL语句以及结果映射。

3. Hibernate是一个重量级的框架,内部生成SQL语句,反射操作太多,导致性能下降;

Mybatis是一个轻量级的框架,需要自己写sql语句,有较少的反射操作。

4. Hibernate 不方便做SQL优化,遇到较复杂的SQL语句需要绕过框架实现复杂,对多字段的结构进行部分映射困难;

Mybatis 不仅可以做SQL优化还可以SQL与Java分离,还可以自行编写映射关系,复杂的SQL语句Mybatis效率更高

Mybatis优势:可以进行更细致的SQL优化;容易掌握

Hibernate优势:dao层开发比mybatis简单,mybatis需要维护SQL和结果映射

hibernate数据库移植性好

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定义输出结果的类型。

为什么选择myBatis(优势)?

什么是MyBatis

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

半自动化:支持定制化sql,存储过程以及高级映射

集成方便:不仅方便Spring等javaee框架的集成,还与其他ORM模型继承也很方便

主配置文件(config文件)

Mapper文件

创建sqlSession

Mybatis的生命周期:

SqlSessionFactoryBuilder:构造器,会根据配置信息生成SqlSessionFactory;

SqlSessionFactory:利用工厂模式生产SqlSession;

SqlSession:既可以发送SQL语句去执行并返回结果,也可以获取Mapper的接口

SQL Mapper:映射器,给出对应的SQL和映射规则,负责发送SQL和处理结果

MyBatis配置文件的层级结构:

<configuration> <environments> <mappers>

<configuration>元素:

功能:标识配置文件的起始,所有配置信息都存放在这里

<environments>元素:

功能:配置数据库环境信息,注册数据源,配置数据库事务

default:默认使用的数据库环境

<environment>:单个数据库环境信息的标识

<transactionManager>:配置数据库事务(JDBC,MANAGED,自定义)

<dataSource>:配置环境信息中数据源连接的信息(UNPOOLED,POOLED,JNDI,自定义数据源)

<property>:配置环境信息的属性

<properties>元素:

功能:配置属性的元素,可以在配置文件的上下文中使用该属性

<properties>元素的结构:

properties配置文件、程序参数传递、property子元素

<typeAliases>元素:

功能:我们使用mybatis需要将查询的虚拟表映射为java中的实体类的对象,就需要让myBatis知道这些我们自定义”类型“

在主配置文件中进行配置

在sqlMapper.xml中可以使用类名

<mappers>元素:

功能:用来在mybatis初始化时引入映射器

<mappers>层次结构:

1:用相对路径引入映射器

2:用文件定位符引入映射器

注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

3:注册指定包下的所有mapper接口

注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值