目录
1、什么是框架?
- 软件开发中的一套解决方案,不同的框架解决的是不同的问题;
- 框架,是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;
- 框架,是可被应用开发者定制的应用骨架;
- 框架,就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统;
- 框架,一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。
2、使用框架的好处?
- 框架封装了很多的细节,使开发者可以使用极简的方式实现功能,大大提高开发效率。
- 将应用自身的设计和具体的实现技术解耦,研发将集中在应用的设计上,而不是具体的技术实现;
- 技术实现是应用的底层支撑,不应该直接对应用产生影响。
3、三层架构
表现层:用于展示数据的;
业务层:处理业务需求;
持久层:和数据库交互;
4、持久层技术解决方案
- JDBC技术:Connection、PrepareStatement、ResultSet
- Spring的JdbcTemplate:Spring中对jdbc的简单封装;
- Apache的DBUtils:它和Spring的JdbcTemplate很像,也是对Jdbc的简单封装;
- 以上都不是框架,JDBC是规范,Spring的JdbcTemplate和Apache的DBUtils都只是工具类;
5、jdbc操作数据库的问题
- 加载数据库驱动,获取数据库链接Connection,定义sql语句,获取预处理PreparedStatement,查询结果集ResultSet,遍历查询结果集,释放资源,传统JDBC,每次都要编写,重复工作,需要简化;
- 用mybatis框架,只需要编写sql语句,其他由框架实现;
JDBC操作数据库的代码:没有使用mybatis框架代码简洁
import org.junit.Test;
import java.sql.*;
public class jdbcTest {
@Test
public void mysql() throws SQLException {
Connection connection =null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 通过驱动管理类获取数据库链接connection
connection = DriverManager.getConnection("jdbc:mysql://192.168.171.131:3306/mybatis?characterEncoding=utf-8","root","root");
// 定义sql语句?表示占位符
String sql = "select * from user where username = ?";
// 获取预处理preparedStatement
preparedStatement = connection.prepareStatement(sql);
// 设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
preparedStatement.setString(1,"小王");
// 向数据库发出sql执行查询,查询出结果集 resultSet
resultSet = preparedStatement.executeQuery();
// 遍历查询结果集 resultSet
while(resultSet.next()){
System.out.println(resultSet.getString("id") + " " +
resultSet.getString("username"));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
// 释放资源
if(resultSet!=null){
resultSet.close();
}
}
}
}
6、Mybatis框架概述
- mybatis是基于java的持久层框架;
- 它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接,创建statement等繁杂的过程;
- mybatis通过xml或注解的方式,将要执行的各种statement配置起来;
- 通过java对象和statement中sql的动态参数,进行映射,生成最终执行的sql语句;
- 最后由mybatis框架执行sql,并将结果映射为java对象,并返回;
- 采用ORM思想,解决了实体和数据库映射的问题,对jdbc进行了封装,屏蔽了jdbc api底层访问细节,不用与jdbc api打交道,就可以完成对数据库的持久化操作;
- ORM:Object Relational Mapping 对象关系映射
- ORM,就是把数据库表和实体类及实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表;
- 实体类中的属性和数据库表的字段名称要保持一样;