MyBatis是什么
MyBatis是一款用于持久层的、轻量级的半自动化ORM框架,封装了所有JDBC操作以及设置查询参数和获取结果集的操作,支持自定义sql、存储过程和高级映射。用来简化JDBC的操作。
该框架用来将内存中的数据写入到磁盘中(数据库中),和数据库交互。
用该框架开发的程序启动时占用的资源少、对业务代码的侵入不强,比较容易配置、使用和部署简单。
ORM(对象关系映射),用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生;Java中的数据库和实际数据库类型不一致,在使用时,需要进行类型转换,MyBatis可以将Java中的类型逐一映射到数据库的字段类型上;
Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成,所以,称之为半自动ORM映射工具
MyBatis优点
1、基于SQL语句编程,相当灵活
2、代码量少,与JDBC相比,减少了50%以上的代码量
3、很好的与各种数据库兼容
4、数据库字段和对象之间可以有映射关系
5、能够与Spring很好的集成
MyBatis的缺点
1、SQL语句的编写工作量较大,字段多,关联表多时,语句复杂
2、数据库移植性差,SQL语句依赖于数据库,不能随意更换数据库
持久层
-
-
负责将数据保存到数据库的那一层代码
-
Java EE 三层架构:表现层、业务层、持久层
-
快速使用
MyBatis的快速开发使用可借助MyBatis官网介绍,根据自己的需求来进行开发。MyBatis官网链接
-
-
创建maven项目,在pom文件里面导入坐标/依赖
-
-
-
编写MyBatis核心配置文件
-
在 resourse 文件目录下创建 mybatis 配置文件 mybatis-config.xml
-
-
编写 SQL 映射文件
-
SQL 映射文件里面是 Sql语句和数据库的映射,
-
-
编码
-
定义 POJO 数据库数据对应的实体类
-
加载核心配置文件,获取 SqlSessionFactory 对象
-
获取 SqlSession 对象,执行 SQL 语句
-
释放资源
-
-
Mapper 代理
使用Mapper 代理开发的目的
解决原生代码中存在的部分硬编码问题(代码中存在直接使用字符串)
简化后期执行SQL
Mapper 代理开发步骤
-
-
定义与 SQL 映射文件同名的 Mapper 接口,并且将 mapper 接口与映射文件放在同一目录下(为了代码开发的规范,将mapper 映射文件放在 resourse 目录下,在该目录下创建与代码接口文件相同的目录结构,)。
-
-
-
设置 SQL 映射文件的 namespace 属性为 Mapper 接口全限定名
-
在 Mapper 接口中定义fang'fa方法名就是 SQL 映射文件中 SQL语句的id,并保持参数类型和返回值类型一致。
-
-
-
编码
-
-
-
-
通过 SqlSession 的getMapper 方法获取 Mapper 接口的代理对象
-
调用对应方法完成 sql 的执行
-
-
结果映射
解决当数据库列名与对应的实体类属性名称不一样时,将两者进行映射,以便对结果进行封装
在 mapper.xml文件中进行列名与属性名的一个映射
在 Sql 语句中将 resultType 替换成 resultMap
进行条件查询时可能出现的问题:特殊字符
在xml文件中一些特殊字符会识别成其他的意思,所以在 xml 文件中使用特殊字符需要进行处理
sql 语句进行查询时,< > = 等符号
两种方法:
-
-
-
使用转义字符来代替
-
使用 CDATA区(在需要使用特殊字符的地方打出 'CD ' 会自己补全代码)
-
-