提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
首先理解什么是orm
Orm指的是关系映射,为了解决面向对象和关系型数据库不匹配而出现的技术.简单来说orm就是持久化的数据(DB)和实体对象(java对象)的一个映射模式.通过orm我们就可以把db中的数据封装到对应的实体对象当中,也可以把对象当中的数据再保存到数据库当中.
重点 映射规则,主要有三点
数据表对应类,表中字段对应类中的属性,表数据对应实体对象.
MyBaties介绍
原始jdbc操作步骤
1.注册驱动
2.获取数据库连接
3.获取执行者对象
4.提供一条sql语句
5执行这条语句获取到结果集
6.再对这个结果集进行相关的处理(把表中的数据封装到相应的类里面)
7.释放资源
Jdbc的弊端
- 频繁的创建和销毁数据库连接肯定会造成资源的浪费,影响性能
- Sql语句直接写死在代码中,将来修改sql语句,就得动源代码,造成代码不易维护
- 操作的时候需要手动将结果集中封装到实体对中.
- 增删改查操作需要的参数时,需要手动的将实体对象的数据设置到sql语句占位符中
原始解决方案 - 利用数据库连接池解决
- Sql语句抽取到配置文件中
- 使用反射,内省等底层技术,将实体与表进行属性和字段的自动映射
MyBasties介绍
1.这是一个基于Java的持久层框架,内部封装了jdbc,使开发者只需要关注sql本身,而不需要花费精力去处理加载驱动,创建连接,创建执行者等复杂的操作.
2.MyBaties通过xml或者注解的形式将各种需要执行的statement配置起来,并通过Java对象和statement中的SQL的动态参数映射,形成最终要执行的SQL语句.
3.执行完成后将结果映射为Java对象并返回.
(Statement 是 Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。Statement对象,用于执行不带参数的简单SQL语句。)
具体操作步骤
- 导jar包
- 编写映射配置文件(通过名称空间和id来找到最终想执行的sql语句的)
- 编写核心配置文件(获取到数据库连接相关的参数)
- 使用相应的API来完成编码
相关的API
- Resources 加载资源的工具类,用来加载配置文件
(当然不用它也可以,通过当前这个类获取他的class对象 ,然后得到类加载器,也是调用的这个方法) - SqlSessionFactoryBuilder 获取SqlSessionFactory工厂对象的功能类,因为实际上帮我们完成操作的是SqlSession对象,而这个对象实际上需要工厂对象来获取.这个类就是用来获取工厂对象的.
- SqlSessionFactory 获取SqlSession构建者对象的工厂接口,有两个构造,空参的需要自己提交事务,有参的可以自动提交事务
- SqlSession 构建对象接口,用于执行SQL,管理事务,接口代理,内部有增删改查的操作,事务的提交回滚,获取指定的代理实现类对象以及释放资源.
映射配置文件
映射配置文件包含了数据和对象之间的映射关系以及要执行的SQL语句
里面比较重要的有一下几个部分
1.DTD约束,主要用来提示错误信息,比如标签写错了
2.Mapper 核心根标签,必须是这个已经提前约定好了
namespace属性,代表名称空间.(配合我们的id来找到最终想要执行的sql语句)
3.Select标签 执行查询的操作
id属性 惟一的标识
resultType属性 查询的属性封装到哪个对象当中,就用resultType指定
parameterType属性 参数映射对象的类型(用来指定我们要传入的参数)
如果我们sql语句中有参数,我们通过#{}的形式来写
主要执行流程
- 加载核心配置文件 Resources
- 获取SqlSession工厂对象SqlSessionFactoryBuilder
- 通过工厂对象获取Session对象 SqlSession
- 执行映射配置文件中的sql语句并接收结果 (“名称空间.唯一标识”, 真实参数)
- 处理结果
- 释放资源
核心配置文件
核心配置文件包含了MyBaties最核心的设置和属性信息.如数据库连接,事物,连接池信息等
- DTD的约束
- Configuration 核心根标签
- Environments 配置数据库环境的,环境是可以有多个的,具体用属性来指定(注意这里有s)
a) Default属性 指定具体使用哪一个 - Environment 配置数据库环境
a) Id属性 惟一的标识 - TransatctionManager
a) Type属性代表事物处理的类型 - dataSource 代表数据源的信息
a) type 属性代表连接池信息 - dataSource中还有许多子标签property代表获取数据库表连接的配置信息.
- Mappers 引入映射配置文件的标签
a) Mapper子标签 引入指定的映射配置文件
b) Resource属性指定映射配置文件的名称