1. 什么是框架
是一套规范,可以理解成半成品软件,开发者在它基础上进行使用。
2. 框架的作用
封装了一些冗余重用率低的代码,使用反射与动态代理机制实现代码的通用性。
3. 常见的框架
- 表现层
a. Struts2
b. Spring MVC
- 持久层
a. Hibernate
b. Spring JDBC
c. Mybatis
- 全栈
a. Spring
4. Mybatis
4.1 出现背景
4.1.1 传统的JDBC操作
@Override
public User userLogin(User user) {
//创建QueryRunner的对象
QueryRunner qr = new QueryRunner(DruidUtils.getDataSource());
//创建sql语句查询表中是否存在该用户
String sql = "select *from `lagou_user` where name=? and password=?";
User resultuser=new User();
try {
resultuser = qr.query(sql, new BeanHandler<User>(User.class), user.getName(),user.getPassword());
if (resultuser==null){
return null;
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return resultuser;
}
可能出现的问题
- a. 数据库频繁的创建连接、关闭连接,造成系统资源浪费
- b. 在进行curd操作中有许多sql语句硬编码问题,sql语句的改变需要重新部署项目
- c. 查询得出的结果需要手动封装到相对应的Java Bean对象
4.1.2 解决的方案
针对上述的问题,提出一些解决思路
- a. 针对硬编码的sql语句抽取到xml配置文件中
- b. 采用配置文件配置数据库,使用数据库连接池进行连接资源
- c. 使用反射、内省等底层技术,自动将实体类和表中的属性字段互相映射起来
4.2 Mybatis简介
是一个基于ORM的半自动轻量型的持久层框架,对使用JDBC操作数据库进一步封装,让开发人员只关注SQL语句本身;
主要完成了驱动注册、创建连接、创建curd声明、手动设置参数、结果检索等繁杂的代码编程。
半自动与全自动
本质区别:需不需要编写SQL语句,全自动的话就是框架可以自动生成SQL语句,例如Hibernate
缺点:全自动由于自动生成SQL语句,无法进行SQL语句的优化,数据量大的时候容易出现慢查询
轻量型
本质:启动加载消耗系统资源的多少。
4.3 ORM思想
全称 Object Relational Mapping,对象关系映射
- Object:实体对象,就是程序中的一个Java Bean
- Relational:关系型数据库的数据结构,数据库中的一张表
- Mapping:映射,通过XML或者注解将实体对象与表中的结果对应起来
4.3.1 作用
将实体变化转为SQL脚本,通过执行脚本继而改变数据表,从而达到映射的作用
4.4 Mybatis作用
Mybatis就是采用ORM的思想,对JDBC进行封装,屏蔽了JDBC API底层访问的实现细节,使得开发人员不需要和JDBC API进行打交道,就可以完成数据库的持久化操作。