1. 三层架构
界面层: 和用户打交道的, 接收用户的请求参数, 显示处理结果的。(jsp ,html ,servlet)<br /> 业务逻辑层: 接收了界面层传递的数据,计算逻辑,调用数据库,获取数据<br /> 数据访问层: 就是访问数据库, 执行对数据的查询,修改,删除等等的。<br /> (ps:界面层又称表示层、视图层)
1)三层对应的包
界面层: controller包 (servlet)<br /> 业务逻辑层: service 包(XXXService类)<br /> 数据访问层: dao包(XXXDao类)<br />
2)三层中类的交互
用户使用界面层--> 业务逻辑层--->数据访问层(持久层)-->数据库(mysql)<br /> ![image.png](https://cdn.nlark.com/yuque/0/2021/png/21675987/1633738781544-266cfdf3-8419-45d0-ab1f-67361deba7d7.png#clientId=ua383b6af-7f86-4&from=paste&height=79&id=u593a87cd&margin=%5Bobject%20Object%5D&name=image.png&originHeight=92&originWidth=650&originalType=binary&ratio=1&size=25167&status=done&style=none&taskId=u40bff44a-1a2c-4ad9-9282-6e64be6bfe1&width=560)<br />
3)三层对应的处理框架
界面层---servlet---springmvc(框架)<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/21675987/1633739116990-87439649-66ae-48d9-9286-2ff2422f2445.png#clientId=ua383b6af-7f86-4&from=paste&height=147&id=u7aa9d5c8&margin=%5Bobject%20Object%5D&name=image.png&originHeight=163&originWidth=800&originalType=binary&ratio=1&size=59732&status=done&style=none&taskId=u81551ef0-4111-4e4e-9d60-3f9e263c56e&width=721)<br /> 业务逻辑层---service类--spring(框架)<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/21675987/1633739093086-0cfa4491-f66f-4ff1-97dd-42836fab4cf7.png#clientId=ua383b6af-7f86-4&from=paste&height=136&id=u23634ca7&margin=%5Bobject%20Object%5D&name=image.png&originHeight=152&originWidth=808&originalType=binary&ratio=1&size=47163&status=done&style=none&taskId=u831ceca4-6dfa-4c6e-855d-0041eb9b77d&width=723.991455078125)<br /> 数据访问层---dao类--mybatis(框架)<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/21675987/1633739060419-52dd89c1-8c1f-4011-a10c-fb50ab496aac.png#clientId=ua383b6af-7f86-4&from=paste&height=154&id=ua57d8365&margin=%5Bobject%20Object%5D&name=image.png&originHeight=169&originWidth=800&originalType=binary&ratio=1&size=59892&status=done&style=none&taskId=u500d3d11-4644-4332-a43c-1a6a68a0b9c&width=726.991455078125)
4)为什么要使用三层
- 结构清晰、耦合度低, 各层分工明确
- 可维护性高,可扩展性高
- 有利于标准化
- 开发人员可以只关注整个结构中的其中某一层的功能实现
- 有利于各层逻辑的复用
2、框架
1)什么是框架
框架其实是半成品软件,就是一组组件,供你使用完成你自己的系统。框架是一个舞台, 一个模版。
模版 | 框架是一个模块 |
---|---|
- 规定了好一些条款,内容。 - 加入自己的东西 |
- 框架中定义好了一些功能。这些功能是可用的。 - 可以加入项目中自己的功能, 这些功能可以利用框架中写好的功能。 |
- 框架是一个软件,半成品的软件,定义好了一些基础功能, 需要加入你的功能就是完整的。
-
2) 框架特点
代码比较多,开发效率低
- 需要关注 Connection ,Statement, ResultSet 对象创建和销毁
- 对 ResultSet 查询的结果,需要自己封装为 List
- 重复的代码比较多些
-
4)mybatis框架
mybatis是 MyBatis SQL Mapper Framework for Java (sql映射框架)
1)sql mapper :sql映射
可以把数据库表中的一行数据 映射为 一个java对象。
一行数据可以看做是一个java对象。操作这个对象,就相当于操作表中的数据
2) Data Access Objects(DAOs) : 数据访问 , 对数据库执行增删改查。
3)mybatis提供了哪些功能:
1. 提供了创建Connection ,Statement, ResultSet的能力 ,不用开发人员创建这些对象了
2. 提供了执行sql语句的能力, 不用你执行sql
3. 提供了循环sql, 把sql的结果转为java对象, List集合的能力while (rs.next()) {
Student stu = new Student();
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("name"));
stu.setAge(rs.getInt("age"));
//从数据库取出数据转为 Student 对象,封装到 List 集合
stuList.add(stu);
}
4.提供了关闭资源的能力,不用你关闭Connection, Statement, ResultSet
开发人员做的是: 提供sql语句
最后是: 开发人员提供sql语句—mybatis处理sql—-开发人员得到List集合或java对象(表中的数据)
总结:
mybatis是一个sql映射框架,提供的数据库的操作能力。增强的JDBC,
使用mybatis让开发人员集中精神写sql就可以了,不必关心Connection,Statement,ResultSet
的创建,销毁,sql的执行。