一、什么是框架

● 在文献中看到的framework被翻译为框架

● java常用的框架:

  • SSM三大框架:Sping + SpringMVC + MyBatis
  • SpringBoot
  • SpringCloud

● 框架其实就是对通用代码的封装,提前写好了一堆接口和类,我们可以在做项目的时候直接引入这些接口和类(引入框架),基于这些现有的接口和类进行开发,可以大大提升开发的效率。

● 框架一般以jar包的形式存在(jar包中有class文件以及各种配置文件等)。

● SSM三大框架的学习顺序:MyBatis—Spring—SpringMVC

二、三层架构

● 表现层(UI):直接跟前端打交互(一是接收前端ajax请求,二是返回json数据给前端)

● 业务逻辑层(BLL):一是处理表现层转发过来的前端请求(也就是具体业务),二是将从持久层获取的数据返回到表现层。

● 数据访问层(DAL):直接操作数据库完成CRUD,并将获得的数据返回到上一层(也就是业务逻辑)。

●  Java持久层框架:

  • MyBatis
  • Hibernate(实现了JPA规范)
  • JOOQ
  • Guzz
  • Spring Data(实现了JPA规范)
  • ActiveJDBC

三、JDBC的不足

实例代码1:

//.......
// sq1语句写死在java程序中
String sq1 ="insert into tuser(id,idCard,username,password,birth,gender,email,city,street,zipcode,phone,grade) values(?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement ps =conn.prepareStatement(sql);
// 繁琐的赋值:思考一下,这种有规律的代码能不能通过反射机制来做自动化。
ps.setString(1,“1");
ps.setString(2, "123456789");
ps.setString(3,"zhangsan");
ps.setString(4,"123456");
ps.setString(5,"1980-10-11");
ps.setString(6,"男");
ps.setString(7,"zhangsan@126.com");
ps.setString(8,"北京");
ps.setString(9,"大兴区凉水河二街");
ps.setString(10,"1000000");
ps.setString(11,"16398574152");
ps.setString(12,"A");// 执行SOL
int count =ps.executeUpdate();
// ......

实例代码2:

//......
//sql语句写死在程序里
String sq1="select id,idCard,username,passwordbirth,gender,email,city,street,zipcode,phone,grade from t user";
PreparedStatement ps = conn.prepareStatement(sal);
ResultSet rs =ps.executeQuery();
List<User> userList = new ArrayList<>();
//思考以下循环中的所有代码是否可以使用反射进行自动化封装。
while(rs.next()){
// 获取数据
String id = rs.getString("id");
String idCard =rs.getString("idCard");
String username =rs.getString("username");
String password = rs.getString("password");
String birth = rs.getString("birth");
String gender = rs.getString("gender");
String email = rs.getString("email");
String city = rs.getString("city");
String street = rs.getString("street");
String zipcode = rs.getString("zipcode");
String phone = rs.getString("phone"); String grade = rs.getString("grade");// 创建对象
User user = new User();
// 给对象属性赋值 user.setId(id);
user.setIdCard(idCard):
user.setUsername(username);
user.setPassword(password);
user.setBirth(birth);
user.setGender(gender);
user.setEmail(email);
user.setCity(city);
user.setStreet(street);
user.setZipcode(zipcode);
user.setPhone(phone);
user.setGrade(grade);
// 添加到集合
userList.add(user);}
//......

不足:

  • SQL语句写死在Java程序中,不灵活。改SQL的话要更改代码。违背开闭原则OCP。
  • 给 ?传值是繁琐的。思考:能不能自动化?
  • 将结果集封装成Java对象是繁琐的。思考:能不能自动化?

四、下载MyBatis并了解MyBatis

● Mybatis本质上就是对JDBC的封装,通过Mybatis完成CRUD。

● Mybatis在三层架构中负责持久层的,属于持久层框架。

● Mybatis的发展【引用百度百科】:

  • MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
  • iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
  • 当前,最新版本是MyBatis 3.5.11,其发布时间是2022年09月18日。

● 下载:Releases · mybatis/mybatis-3 (github.com)

ORM:对象关系映射

  • O(Obiect):Java虚拟机的Java对象
  • R(Relational):关系型数据库
  • M(Mapping):将Java虚拟机中的java对象映射到数据库表中的一行记录,或是将数据库表中一行记录映射成Java虚拟机中的一个Java对象。

● MyBatis框架特点:

  • 支持定制化 SQL、存储过程、基本映射以及高级映射
  • 避了几乎所有的JDBC 代码中手动设置参数以及获取结果集
  • 支持XML开发,也支持注解式开发。[为了保证sql语句的灵活,所以mybatis大部分是采用XML方式开发]
  • 将接口和Java的POJOs(Plain Ordinary Java Obiect,简单普通的Java对象)映射成数据库中的记录体积小好学: 两个ar包,两个XML配置文件,
  • 完全做到sql解耦合,
  • 提供了基本映射标签
  • 提供了高级映射标签
  • 提供了XML标签,支持动态SQL的编写
  • ......

MyBatis(一)MyBatis概述相关推荐

  1. MyBatis-02 MyBatis XML方式概述及配置步骤

    概述 一个简单的权限控制需求 创建数据库表 创建实体类 XML方式概述及步骤 1. 首先在src/main/resources下com.artisan.mybatis.xml.mapper目录下创建5 ...

  2. (Mybatis)Mybatis简介和初步使用

    1. Mybatis简介 1.1什么是Mybatis MyBatis 是一款优秀的持久层框架 它支持定制化 SQL.存储过程以及高级映射. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参 ...

  3. MyBatis(三)MyBatis缓存和工作原理

    MyBatis缓存 MyBatis提供了一级缓存和二级缓存,并且预留了集成第三方缓存的接口. 从上面MyBatis的包结构可以很容易看出跟缓存相关的类都在cache的package里,其底层是一个Ca ...

  4. MyBatis(一)MyBatis介绍和配置详解

    在Java程序里面去操作数据库,最原始的办法是使用JDBC的API.需要分为六步: 注册驱动 通过DriverManager获取一个Connection 通过Connection创建一个Stateme ...

  5. MyBatis(二)MyBatis基本流程源码分析

    MyBatis体系结构 MyBatis的工作流程 在MyBatis启动的时候我们要去解析配置文件,包括全局配置文件和映射器配置文件,我们会把它们解析成一个Configuration对象,里面会包含各种 ...

  6. 【MyBatis】MyBatis初体验

    文章目录 框架 软件开发三层结构 MyBatis概念 MyBatis由来 ORM框架与MyBatis的区别 MyBatis编码流程 框架 是一个可以重复使用的设计构件,我们在做开发的时候框架是直接调来 ...

  7. MyBatis】MyBatis一级缓存和二级缓存

    转载自  MyBatis]MyBatis一级缓存和二级缓存 MyBatis自带的缓存有一级缓存和二级缓存 一级缓存 Mybatis的一级缓存是指Session缓存.一级缓存的作用域默认是一个SqlSe ...

  8. mybatis传递多个参数_深入浅出MyBatis:MyBatis解析和运行原理

    原文:https://juejin.im/post/5abcbd946fb9a028d1412efc 本篇文章是「深入浅出MyBatis:技术原理与实践」书籍的总结笔记. 上一篇介绍了反射和动态代理基 ...

  9. mybatis支持驼峰自动转换sql吗_SpringBoot整合mybatis——配置mybatis驼峰命名规则自动转换...

    一.简述 mybatis驼峰式命名规则自动转换: 使用前提:数据库表设计按照规范"字段名中各单词使用下划线"_"划分": 使用好处:省去mapper.xml文件 ...

  10. MyBatis系列-Mybatis入门精讲

    导语   在之前的分享中没有做过关于Mybatis内容相关的分享,这段时间深入的学习了关于Mybatis的相关知识,这里首先来对Mybatis的相关基础知识做一个介绍,这个系列的分享博主会做到有始有终 ...

最新文章

  1. vue react 路由history模式刷新404问题解决方案
  2. 如何初始化静态地图?
  3. excel 进行二叉树_Excel下拉菜单,那些你不知道的操作
  4. 问题 | list(set(list))如何实现顺序不变
  5. 区块链学习笔记:D04 区块链在各行业领域的应用(二)
  6. 软件评测师32小时-第一小时 软件测试概论
  7. java static 详解
  8. Chromium OS Autotest 客户端测试
  9. VS Code Css格式化插件
  10. matlab各向异性高斯核方向导数滤波器,加权组合多尺度各向异性高斯核对象轮廓检测...
  11. CSS-增加字体和颜色样式
  12. 【C语言】之实现三角形类型判断
  13. 词消歧算法:使用WordNet和Lesk算法进行英文消歧义
  14. Linux虚拟机之间如何添加互信
  15. FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding
  16. OpenCV实战之人脸美颜美型(四)——肤色检测
  17. iOS开发-ios7样式绕圈活动指示器(自定义Activity Indicator View)
  18. ST_Geometry 的关系函数
  19. oracle 主键、唯一键值、唯一索引关系
  20. python基础第十三章:文件读写

热门文章

  1. SOFA BOLT源码解析之设计要点-线程模型
  2. SpringCloud—笔记(三)高级篇
  3. 小程序 wx.showModal
  4. 企业级数据中台应用架构和技术架构
  5. H5新特性 - 新增标签
  6. 百度网盘不限速方法2020_亿寻——百度网盘不限速方法
  7. YTU OJ 2451: 股市风云
  8. 2021高考成绩位次查询6,江西高考排名对应学校-江西高考位次查询(2021年文科参考)...
  9. Java经典入门教程!java工程师的进阶之路
  10. el-backtop关于 target is not existed: .page-component__scroll .el-scrollbar__wrap的问题