项目地址:https://github.com/aijisjtu/Bot-Battle

访问数据库流程

flowchart LR
开发人员 --> C(连接数据库 JDBC)
C --> D(MyBatis-Plus 映射和执行 SQL)
D --> E(数据库被访问)
flowchart RL
A(数据库)--查询结果--> B(MyBatis-Plus)
B--将这些数据转换成 Java 对象--> 开发人员
  • 连接数据库

    JDBC(Java 数据库连接)发送 SQL 语句到数据库。

  • MyBatis-Plus 映射,数据库执行 SQL

    MyBatis-Plus 把数据库的数据映射成 Java 对象,通过简单的 Java 方法调用,代替手写 SQL 代码。

Java框架各层级

通俗的例子 :

Controller 层像是一个服务员,他把客人(前端)点的菜(数据、请求的类型等)进行汇总什么口味、咸淡、量的多少,交给厨师长(Service 层),厨师长则告诉沾板厨师(Dao 1)、汤料房(Dao 2)、配菜厨师(Dao 3)等(统称 Dao 层)我需要什么样的半成品,副厨们(Dao 层)就负责完成厨师长(Service)交代的任务。

4 层

  • pojo (Plain Old Java Object)层:在各层之间传输数据。将数据库中的表对应成 Java 中的 Class。比如封装用户信息。

  • dao(Data Access Object)层(也叫 mapper 层):将 pojo 层的 class 中的操作(CRUD),映射成 sql 语句。与数据库交互,比如获取或更新用户数据。

  • service 层:组合使用 mapper 层 中的操作,实现具体的业务逻辑,如验证登录。

  • controller 层:用户与系统交互的入口。负责请求转发,接受前端页面过来的参数,传给相应 Service 处理,接到返回值,再传给页面。

class 操作 数据库操作
Create insert
Retrieve select

剩下的 2 个操作:Update 对应 update,Delete 对应 delete

对象的调用流程

flowchart TB
UI(用户界面) -->|登录请求| Controller[Controller层]
Controller -->|调用| Service[Service层]
Service -->|查询用户| DAO[DAO/Mapper层]
DAO -->|访问| DB[(数据库)]
DB -->|返回用户信息| DAO
DAO -->|返回对象| Service
Service -->|验证密码| Response{响应结果}
Response -->|登录成功| UI
Response -->|登录失败| UI

耦合性与分层

如果一个厨师既负责跑堂,又负责烹饪。那这个饭店的管理一定非常混乱吧。小工就是 DAO,从食材库里(数据源)取出食材(原始数据),进行简单处理(数据对象化)。厨师就是 Service,找到小工(DAO),获取各种半成品(对象化数据),加工成顾客需要的菜肴(最终数据)。跑堂就是 Controller,负责接单(提交数据)上菜(响应数据),是顾客与后厨间的媒介(提供用户与后台程序的接口)。各司其职(高内聚),轻松协作(低耦合),就是分层思想的目标。

这个通俗易懂的故事从该链接转载:https://blog.csdn.net/qq_41810415/article/details/126545376

访问数据库 与 Java框架各层级的更多相关文章

  1. 使用Tomcat数据源的方式访问数据库(MySql) --Struts2框架应用与开发

    1.为方便测试首先创建数据库和表,然后插入测试数据   2.打开Tomcat服务器安装目录的conf/下的context.xml,配置context.xml文件. 在<Context>标签 ...

  2. 【JAVA - SSM】之MyBatis与原生JDBC、Hibernate访问数据库的比较

    首先来看一下原生JDBC访问数据库的代码: public static void main(String[] args) { // 数据库连接 Connection connection = null ...

  3. java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类

    本文关键词: java集合框架  框架设计理念  容器 继承层级结构 继承图 集合框架中的抽象类  主要的实现类 实现类特性   集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...

  4. Spring Boot 框架下使用MyBatis访问数据库之基于XML配置的方式

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML ...

  5. Spring框架访问数据库的两种方式的小案例

    1.1 以Xml的方式访问数据库的案例 要以xml的方式访问数据库需要用到JdbcTemplate ,因为 JdbcTemplate(jdbc的模板对象)在Spring 中提供了一个可以操作数据库的对 ...

  6. java web中Jdbc访问数据库步骤通俗解释(吃饭),与MVC的通俗解释(做饭)

    一.Jdbc访问数据库步骤通俗解释(吃饭) 1)加载驱动 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServer”); 2) 与数据库建立连接 Co ...

  7. oracle 事务简介,锁的概念,java访问数据库注意事项

    java链接oracle和连接其他数据库一样有两种方式:1 桥接 jdbc-obdc2 jbdc insert语句一次插入大量数据 insert into table (列1,列2,列3) selec ...

  8. 手工搭建基于ABP的框架(2) - 访问数据库

    为了防止不提供原网址的转载,特在这里加上原文链接: http://www.cnblogs.com/skabyy/p/7517397.html 本篇我们实现数据库的访问.我们将实现两种数据库访问方法来访 ...

  9. ABP框架用Dapper实现通过SQL访问数据库

    ABP的框架(2) - 访问数据库   为了防止不提供原网址的转载,特在这里加上原文链接:http://www.cnblogs.com/skabyy/p/7517397.html 本篇我们实现数据库的 ...

  10. Java访问数据库Mysql

    一.概述 本文主要介绍Java接连数据库的基本方法和步骤,并对其中的几个要点进行简要说明. 二.数据库访问步骤 在Java中连接数据库进行的访问主要有以下几个步骤: 加载数据库驱动 注册数据库驱动 建 ...

随机推荐

  1. C#-SendKeys方法的使用

    模拟键盘CTRL+S 的输入 using System; using System.Collections.Generic; using System.Diagnostics; using Syste ...

  2. Redis 缓存过期删除/淘汰策略分析

    Redis 缓存过期删除/淘汰策略分析 Redis 缓存删除 Redis 键过期删除,定期删除(主动)和惰性删除(被动) Redis 内存不足时,缓存淘汰策略 key 键过期删除 我们用 redis ...

  3. cookie和localStorage和sessionStorage的区别

    cookie和localStorage和sessionStorage的区别 下面从几个方向区分一下 cookie,localStorage,sessionStorage 的区别 生命周期: cooki ...

  4. Unity学习笔记--数据持久化Json

    JSON相关 json是国际通用语言,可以跨平台(游戏,软件,网页,不同OS)使用, json语法较为简单,使用更广泛.json使用键值对来存储. 认识json文件 //注意字典类型存储时,键是以st ...

  5. 手机使用termux部署alist(一起体验alist挂载云盘)

    termux安装alist 安装termux 软件Termux:https://f-droid.org/packages/com.termux/ pkg install vim pkg install ...

  6. C语言趣味编程之三天打鱼两天晒网

    include <stdio.h> typedef struct date {//定义一个日期结构体date,三个成员变量year\month\day,使得年月日作为一个整体,相互联系. ...

  7. 使用go语言开发自动化API测试工具

    前言 上一篇文章说到我还开发了一个独立的自动测试工具,可以根据 OpenAPI 的文档来测试,并且在测试完成后输出测试报告,报告内容包括每个接口是否测试通过和响应时间等. 这个工具我使用了 go 语言 ...

  8. [学习笔记] CentOS + .Net后端常用的中间件工具安装

    Redis 5.0+ 官方文档:https://redis.io/download/#redis-downloads sudo yum install redis RabbitMQ 3.7.11+ 官 ...

  9. vite 子项目 热部署 通过nginx,和父项目端口号不同,导致热更新的websocket报错的解决方案

    vite 子项目 热部署 通过nginx,和父项目端口号不同,导致热更新的websocket报错的解决方案 我的父项目端口号是8888 子项目端口号是 8013 这里报错的原因就是,热更新的webso ...

  10. 浏览器的文件访问 API 入门(英文)- 资料

    浏览器的文件访问 API 入门(英文)- 资料 浏览器现在提供了文件访问 API(File System Access API),允许网页 JS 脚本读写本地文件,本文是一个详细的介绍.另外,也可以参 ...