一、原生JDBC
我们首先来看一看原生的JDBC程序的代码:
1 | package com.utils; |
那么原生的JDBC存在哪些问题呢:
- 数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。
解决:使用数据库连接池管理数据库连接。 - 将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。
解决:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。
二、MyBatis
1. MyBatis架构:
- SqlMapConfig.xml:此文件是MyBatis的全局配置文件,配置了MyBatis的运行环境等信息;
mapper.xml:sql映射文件,文件中配置了操作Sql的语句。mapper.xml文件需要在SqlMapConfig.xml文件中加载。 - SqlSessionFactory即会话工厂:通过MyBatis环境等配置信息构造;工厂能帮我们加载核心配置文件。加载了核心配置文件后就创建session,通过session可以对数据库进行操作。
- mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。Executor是执行者,我们不需要管,因为mybatis已经为我们封装好了。mybatis直接执行sql语句。
- Mapped Statement也是MyBatis一个底层封装对象,它包装了MyBatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。
- Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。
- Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。
- Mapped Statement是输入与输出中间过程中产生的一些对象,通过这些对象去访问数据库。
未完待续
最后更新: 2019年11月02日 19:49