对象关系映射(Object Relation Mapping)
ORM是一种为了解决面向对象与关系数据库存在的互不匹配现象的技术。通过使用描述对象和数据库之间映射的元数据,将JAVA程序的对象自动持久化到关系数据库中。
ORM的几种方案
JAVA Data Objects
Castor
TopLink
Spring DAO
Hibernate
Mybatis
Mybatis的优点
- 简单易用,提供数据映射、底层数据访问的封装、DAO框架
- 灵活,通过sql基本上可以实现我们不使用数据访问框架可以实现所有的功能
- 易维护,将SQL和代码分离,提高了可维护性,使系统的设计更清晰
- 通过对SQL的操作可以很容易排查性能瓶颈,提高数据访问效率
- 缺点,需要手动写sql,缺乏自动生成工具
Mybatis功能架构设计
- 接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会将调用数据处理层俩完成具体的数据处理。
- 数据处理层:负责SQL查找、SQL解析、SQL执行和执行结果映射处理等。根据调用请求完成一次数据库操作。
- 基础支持层:负责最基础的功能支持,包括连接管理、事务管理、配置加载和缓存处理,为上层(数据处理层)提供支持
1.加载配置:配置来源于两个地方,一是配置文件,一是JAVA代码的注解,将SQL的配置信息加载成为一个MappedStatement对象(包括了传入参数映射配置、执行SQL语句、结果映射配置),储存在内存中。
2.SQL解析:当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map、JavaBean或者基本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数
3.SQL执行:将最终得到SQL执行
4.结果映射:将操作的数据库的结果按照映射的配置进行转换,可以转换成HashMap、JavaBean或者基本数据类型,并将最终结果返回
实际操作
1.根据业务场景抽象出数据模型,并在关系数据库中创建出对应的表。
2.创建出对应的类对象
3.创建mapper接口类,便于service层的调用
4.在对应的XML文件中,编写sql以实现对数据库的相应操作