抱怨是一件最没意义的事情。如果实在难以忍受周围的环境,那就暗自努力练好本领,然后跳出那个圈子。你好,我是梦阳辰,快来和我一起学习吧!
1.三层架构
界面层:和用户打交道的,接收用户的请求参数,显示处理结果的。(jsp , htnml , servlet)
业务逻辑层:接收了界面层传递的数据,计算逻辑,调用数据库,获取数据
数据访问层:就是访问数据库,执行对数据的查询,修改,删除等等的。
三层对应的包
界面层:controller包( servlet)
业务逻辑层:service包(xxxservice类)
数据访问层:dao包(xxxDao类)
三层中类的交互
用户使用界面层–>业务逻辑层—>数据访问层(持久层)–>数据库(mysql)
三层对应的处理框架
界面层—servlet—springmvc(框架)
业务逻辑层—service类–spring(框架)
数据访问层—dao类–mybatis (框架)
模版:
1、规定了好一些条款,内容-2.加入自己的东西
框架是一个模块
1.框架中定义好了一些功能。这些功能是可用的
2.可以加入项目中自己的功能,这些功能可以利用框架中写好的功能。
框架是一个软件,半成品的软件,定义好了一些基础功能,需要加入你的功能就是完整的。基础功能是可重复使用的,可升级的
框架特点:
1.框架一般不是全能的,不能做所有事情。
2.框架是针对某一个领域有效。特长在某一个方面,比如mybatis做数据库操作强,但是他不能做其它的。
3.框架是一个软件。
使用JDBC的缺陷
1.代码比较多,开发效率低
2.需要关注 Connection ,Statement,ResultSet对象创建和销毁
3.对 ResultSet查询的结果,需要自己封装为List
4.重复的代码比较多些
5.业务代码和数据库的操作混在一起
框架是一个软件,半成品的软件,定义好了一些基础功能,需要加入你的功能就是完整的。基础功能是可重复使用的,可升级的
框架特点:
1.框架一般不是全能的,不能做所有事情
2.框架是针对某一个领域有效。特长在某一个方面,比如mybatis做数据库操作强,但是他不能做其它的。
3.框架是一个软件
什么是 MyBatis?
MyBatis是一款优秀的持久层框架。
它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
mybatis框架
一个框架,早期叫做ibatis,代码在github.
mybatis是MyBatis sQL Mapper Framework for Java (sql映射框架)
1)sql mapper :sql映射
可以把数据库表中的一行数据映射为一个java对象。
一行数据可以看做是一个java对象。操作这个对象,就相当于操作表中的数据
2)Data Access 0bjects (DAOs) 数据访问,对数据库执行增删改查。
mybatis提供了哪些功能:
1.提供了创建connection能力tate不用你执行sqile"t人的约力
2.提供了执行sql语句的能力,不用你执行sql
3.提供了循环sql,把sql的结果转为java对象,list集合的能力
4 .提供了关闭资源的能力,不用你关闭conneqtion,statement,Resultset
开发人员做的是:提供sql语句
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。
2013年11月迁移到Github。
总结:
mybatis是一个sql映射框架,提供的数据库的操作能力。增强的JDBC.
使用mybatis让开发人员集中精神写sql就可以了,不必关心connection ,statement,ResultSet的创建,销毁,sql的执行.
如何获取Mybatis?
maven仓库
https://mvnrepository.com/artifact/org.mybatis/mybatis/3.5.6
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
数据持久化
持久化就是将程序的数据在持久状态和瞬时状态转化的过程。
内存:断电即失。
数据库(jdbc),io文件持久化。
生活:冷藏。
为什么需要持久化?
有一些对象,不能让他丢失。
内存很贵。
Dao层,Serice层,Controller层…
完成持久化工作的代码块。
层界限十分明显。
帮助程序员将数据存入到数据库中。
方便
传统的JDBC代码太复杂了,简化。框架。自动化。
不用Mybatis也可以,更容易上手。技术没有高低之分。
特点:
简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
提供映射标签,支持对象与数据库的orm字段关系映射
提供对象关系映射标签,支持对象关系组建维护
提供xml标签,支持编写动态sql。
实现步骤:
1.新建表
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `student`
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(10) NOT NULL,
`name` varchar(30) DEFAULT NULL,
`tid` int(10) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fktid` (`tid`),
CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('1', '梦阳辰', '1');
INSERT INTO `student` VALUES ('2', '小红', '1');
INSERT INTO `student` VALUES ('3', '小张', '1');
INSERT INTO `student` VALUES ('4', '小李', '1');
INSERT INTO `student` VALUES ('5', '小王', '1');
-- ----------------------------
-- Table structure for `teacher`
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
`id` int(10) NOT NULL,
`name` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of teacher
-- ----------------------------
INSERT INTO `teacher` VALUES ('1', '黄老师');
-- ----------------------------
-- Table structure for `user`
-- ------