软件框架技术-实现在数据库中建立信息表,在id当中进行编写显示、查询、增加、修改、删除数据的代码,最后在localhost8080端口进行输出并显示在网页上

news2024/9/21 2:46:11

友情提示:本文代码较长,逻辑上较为复杂,若有需要建议详细阅读!!!

目录

前言

一、代码目录结构

二、数据库Student表的建立 

三、idea代码配置

3.1 Student.java类(entity软件包中)

 3.2 StudentDao接口类(Dao软件包中)

3.3 StudentDaoImpl.java类(Dao-impl软件包中)

3.4 StudentService接口类(Service软件包中)

3.5 StudentServiceimpl.java类(Service—Impl软件包中)

3.6  StudentController.java类(Controller软件包中)

四、application.yml数据库配置 

五、发布链接及实现效果

5.1运行后效果

5.2获取全部信息

5.3通过id查询信息

 5.4添加学生信息

 5.5修改学生信息

5.6删除学生信息

六、navicat数据库显示结果



前言

1.该程序代码是使用idea2021.12版本编写的,若使用其他软件请对照相关配置;

数据库使用的是Navcat 10.x(数据可视化)的版本,这两个操作软件具体图标如下图:

这两个操作软件近期我会发布安装教程,若有需要可私信我

2.这个程序实现方法的具体内容我忘了,只需要使用@Data,@Repository,@Autowired,@Override,@Service,@RestController,@GetMapping等方法写的,具体实现的功能就是需要新建些.yml和.java及接口文件,这个文件当中需要新建controller、dao、service等文件夹。实现这几个文件夹中配置信息及实现类,最后在controller文件夹中配置访问路径(输入相关信息)通过localhost:8080端口实现在网页上输出;

3.浏览器网页的运行的链接在下面显示;

4.这个博文讲的,我会将代码包发布到我的资源里,有需要的可以直接下载并导入到自己的id里,看看能不能运行;

5.这个程序是我在上学期间跟老师所学并敲写的,因代码内容较多,编写时容易造成些错误,所以本文若有错误请各位指出,我好吸取教训、总结经验、及时改进。

6.若涉及侵权,请联系删除!

7.下面写的是这个表需要建数据库的结构和代码段实现的功能以及运行的结果;


提示:以下是本篇文章正文内容,下面案例可供参考

一、代码目录结构

这是一个以学生信息类的代码,目录结构详见图2,及目录结构表格,各文件配置信息如下:

 图2  目录结构

Student类目录结构
项目名称路径软件包名软件包名/类接口名备注
3-1

src>main>java>

com>example>

unit31

controllerStudentController这是最终用来配置8080端口访问信息及修改相关数据的
daoimpalStudentDaoImpl这是用来实现数据库命令 查询有关功能的
StudentDao定义Dao层相关数据
enityStudent这是对数据库建立的字段进行一个实体类
serviceimpalStudentServiceImpl创建CustomerDao接口对象
StudentService定义抽象方法
src>mainresourcesapplication.yml修改数据库的相关配置信息

以上便是本代码的目录结构,下面将依次把目录的文件代码进行讲解相关配置信息,首先讲一下数据库的配置文件,具体如下:

二、数据库Student表的建立 

本文章使用的数据库是Navcat 10.x的版本。这是一个可视化的数据库。即数据可视,操作简单,基本上(完全)不用敲写代码,若您有数据库且不是可视化的也是可以的,只不过就是需要敲代码及命令语句,建议下载可视化数据库,这样方便操作。

1.新建表的链接以及数据库表名

我建的链接是g215,数据库名称叫做student。(这里建议跟我的一致,因为本章代码都是以student展开的)

 图3  数据库表名

2.在student表中,右键单击设计表,开始设计表结构

图4  设计表

3.表结构如图5所示:

这里要说明表中所有的字符串varchar类型都是需要添加字符集跟排序规则的,字符集需要选择:utf8,排序规则选择:utf8_general_ci。即第一个(字符集)选最后一个,第二个(排序规则)选第一个。同时本博文设立id为主键,同时不允许为空。

 图5  设计表的结构

4.保存表,这里一定要保存表。然后可以添加一些数据,如图6所示:

 图6  表z数据

以上便是数据库表的配置,下面转入到id当中进行方法代码的实现配置 

三、idea代码配置

3.1 Student.java类(entity软件包中)

这是对数据库建立的表名进行实体类构造,然后分别进行有参和无参方法的构造。这里要特别说明,如果手动敲写,一定要检查是否与数据库表中的字段名一致,不然或导致程序出错,建议粘贴复制。

package com.example.unit31.entity;

import lombok.Data;
//实体类(字段名称、数据类型和数据库一直)
@Data
public class Student {
    private int id;//序号
    private String sno;//学号
    private String name;//姓名
    private String sex;//性别
    private int age;//年龄
    private String home;//家庭地址

    //创建构造方法(无参构造方法)
    public Student(){
    }

    //创建构造方法(有参构造方法)
    public Student(int id,String sno,String name,String sex,int age,String home){
        this.id = id;
        this.sno = sno;
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.home = home;
    }
}

 3.2 StudentDao接口类(Dao软件包中)

这是用来定义抽象方法的

package com.example.unit31.dao;

import com.example.unit31.entity.Student;

import java.util.List;

public interface StudentDao {
    //定义抽象方法
    //获取所有学生信息
    public List<Student> getAllStudent();

    //通过id查询学生信息
    public Student getStudentById(int id);

    //添加学生信息
    public int saveStudent(Student student);

    //修改学生信息
    public int updateStudent(Student student);

    //删除学生信息
    public int deleteStudent(int id);
}

3.3 StudentDaoImpl.java类(Dao-impl软件包中)

这是通过使用@Repository,@Autowired,@Override等方法,实现通过数据库命令进行功能实现的

若要是每一个单独敲写,需要在dao层敲写完成一个就要在impl中单击class类以实现构造 

提示:这里的jdbcTemplate若出现报错,属于正常现象 

package com.example.unit31.dao.impl;

import com.example.unit31.dao.StudentDao;
import com.example.unit31.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository
public class StudentDaoImpl implements StudentDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    //获取所有学生信息
    @Override
    public List<Student> getAllStudent() {
        String sql = "SELECT * from student";
        return jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(Student.class));
    }
    //通过id查询学生信息
    @Override
    public Student getStudentById(int id) {
        String sql = "SELECT * FROM student WHERE id=?";
        return jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<>(Student.class),id);
    }
    //添加学生信息
    @Override
    public int saveStudent(Student student) {
        String sql = "INSERT INTO student(sno,name,sex,age,home) VALUES(?,?,?,?,?)";
        int result =jdbcTemplate.update(sql,new Object[]{student.getSno(),student.getName(),student.getSex(),student.getAge(),student.getHome()});
        return result;
    }
    //修改学生信息
    @Override
    public int updateStudent(Student student) {
        String sql = "UPDATE student SET sno=?,name=? WHERE id=?";
        return jdbcTemplate.update(sql,student.getSno(),student.getName(),student.getId());
    }
    //删除学生信息
    @Override
    public int deleteStudent(int id) {
        String sql = "DELETE FROM student WHERE id=?";
        return jdbcTemplate.update(sql,id);
    }
}

3.4 StudentService接口类(Service软件包中)

这是用来定义抽象方法的Service接口

package com.example.unit31.service;


import com.example.unit31.entity.Student;

import java.util.List;

public interface StudentService {
    //定义抽象方法
    //获取所有学生信息
    public List<Student> getAllStudent();

    //通过id查询学生信息
    public Student getStudentById(int id);

    //添加学生信息
    public int saveStudent(Student student);

    //修改学生信息
    public int updateStudent(Student student);

    //删除学生信息
    public int deleteStudent(int id);

}

3.5 StudentServiceimpl.java类(Service—Impl软件包中)

这是用来创建CustomerDao接口对象的

package com.example.unit31.service.impl;

import com.example.unit31.dao.StudentDao;
import com.example.unit31.entity.Student;
import com.example.unit31.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StudentServiceImpl implements StudentService {
    //创建CustomerDao接口对象
    @Autowired
    private StudentDao studentDao;
    //获取所有学生的信息
    @Override
    public List<Student> getAllStudent() {return studentDao.getAllStudent();}
    //通过id查询学生信息
    @Override
    public Student getStudentById(int id) {return studentDao.getStudentById(id);}
    //添加学生信息
    @Override
    public int saveStudent(Student student) {return studentDao.saveStudent(student);}
    //修改学生信息
    @Override
    public int updateStudent(Student student) {return studentDao.updateStudent(student);}
    //删除学生信息
    @Override
    public int deleteStudent(int id) {return  studentDao.deleteStudent(id);}
}

3.6  StudentController.java类(Controller软件包中)

这是一个控制类,用于访问网页实现的,以及添加、修改、删除等功能实现的一个类

package com.example.unit31.controller;
//控制类
import com.example.unit31.entity.Student;
import com.example.unit31.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class StudentController {
    @Autowired
    private StudentService studentService;

    //获取学生信息
    @GetMapping("/getStudent")
    public String getStudent() {return studentService.getAllStudent().toString();}

    //通过id查询学生信息
    @GetMapping("/getStudent/{id}")
    public Student getStudentById(@PathVariable int id){
        return studentService.getStudentById(id);
    }

    //添加学生信息
    @GetMapping("/Studentsave")
    public String saveStudent(){
        Student student = new Student();
        student.setAge(6);
        student.setSno("1111");
        student.setName("添加");
        student.setSex("男");
        student.setAge(22);
        student.setHome("辽宁省");
        int result = studentService.saveStudent(student);
        if(result>0){
            return  "添加客户信息成功!";
        }else{
            return  "添加客户信息失败!";
        }
    }

    //修改学生信息
    @GetMapping("/Studentupdate")
    public String updateStudent(Student student) {
        student.setId(3);
        student.setSno("0000");
        student.setName("修改语句");
        int result = studentService.updateStudent(student);
        if (result > 0) {
            return "修改客户信息成功!";
        } else {
            return "修改客户信息失败!";
        }
    }

        //删除学生信息
        @GetMapping("Studentdelete/{id}")
        public String deleteStudent(@PathVariable int id){
            int result = studentService.deleteStudent(id);
            if(result>0){
                return  "删除客户信息成功!";
            }else{
                return  "删除客户信息失败!";
            }
        }
    }

 以上便是idea的所有问价代码功能,下面讲解以下application.yml数据库的配置 

四、application.yml数据库配置 

首先需要在 application.yml将自己的mysql配置信息设置对,要不接下来会无法发布运行

 

 图7  application.yml目录结构

这里需要检查一下自己数据库的密码是多少,本文的都是root,若不是root请修改到自己设置的密码。

另外,需要将url...localhost:3306/后面改成与你数据库建的的链接名+?,我的是g215,那就改为g215?,详见图8-1(链接表名可以见上文)

还需要看一下数据库的端口号,详见图8-2

 图8-1  数据库配置 

 图8-2  数据库端口配置 

五、发布链接及实现效果

本文使用的是谷歌浏览器,链接前缀是http://localhost:8080/,后面是StudentController,@GetMapping("/getStudent")语句里的Student等语句

下面将运行链接和截图进行表示

5.1运行后效果

单击控制台,开始运行,需出现如图9所示,表示程序正确

  图9  id运行正确效果

5.2获取全部信息

http://localhost:8080/getStudent

   图10 获取全部信息显示效果

5.3通过id查询信息

http://localhost:8080/getStudent/1

​ 

  图11 通过id信息显示效果

 5.4添加学生信息

http://localhost:8080/Studentsave

    图12 添加学生信息成功显示效果

 图13 添加学生信息成功后数据库显示效果

 5.5修改学生信息

http://localhost:8080/Studentupdate

   图14 修改学生信息成功显示效果

   图15 修改学生信息成功后数据库显示效果

5.6删除学生信息

http://localhost:8080/Studentdelete/8

  图16 删除学生信息成功显示效果

 图17删除学生信息成功后数据库显示效果

六、navicat数据库显示结果

  图18 navicat数据库显示效果

 以上便是修改、增加等操作后的显示结果,同时本文功能讲解完成,有需要或能用到的,大家可以依次按操作编写,或直接在我的资源中下载导包使用,若有任何问题,请联系我。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/462766.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一图看懂 openai 模块:ChatGPT的API python库, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 openai 模块&#xff1a;ChatGPT的API python库, 资料整理笔记&#xff08;大全&#xff09; 摘要模块图类关系图结束 摘要 全文介绍系统内置 openai ——ChatGPT的API pyt…

300张现场照片,揭秘移动云大会!

今天&#xff0c;中国移动主办的移动云大会&#xff0c;在苏州金鸡湖国际会议中心正式开幕。 移动云这两年发展很猛&#xff0c;营收从2020年的110多亿&#xff0c;到2021年的240多亿&#xff0c;2022年更是飙到了500多亿&#xff0c;每年翻番。据说&#xff0c;未来三年&#…

《面试1v1》java多线程

我是 javapub&#xff0c;一名 Markdown 程序员从&#x1f468;‍&#x1f4bb;&#xff0c;八股文种子选手。 面试官&#xff1a; 说说你对多线程的理解? 候选人&#xff1a; 多线程就是同时运行多个线程,实现一件事的并行处理。比如开个程序,同时下载多个文件,同时处理多个…

linux-基础语法

本篇博客使用的是 Xshell 登录的云服务器。 Xshell 使用 Alt Enter 的快捷键就可以自动全屏和 取消全屏。 Linux 基础语法 空文件也是需要存储空间的&#xff0c;假设我们创建一个空的 txt 文本文档&#xff0c;虽然我们看着文件大小是 0kb 但是 文件当中时候文件属性的&…

智能AI文档管理新方式,手把手教你打造自己的文档聊天机器人

一个快速指南&#xff0c;为您构建一个聊天机器人网站&#xff0c;可以接受外部文档作为上下文。 随着每天涌现的信息和知识在我的屏幕上呈现&#xff0c;我们面临着人类阅读和记忆自然限制的挑战&#xff0c;这使得跟上信息更新变得越来越困难。现在&#xff0c;像ChatGPT和Ll…

游戏企业如何做用户行为序列分析?

用户行为序列是指固定时间内单个用户按照时间顺序依次触发的部分或全部事件。通过对用户行为序列进行分析&#xff0c;企业可以归纳出群体用户的行为特征&#xff0c;辅助产品运营和迭代。 通常&#xff0c;企业可以将用户行为序列分析应用于所有的分析场景。比如&#xff0c;当…

深入解析CFS任务的负载均衡(框架篇)

本文出现的内核代码来自Linux5.4.28&#xff0c;如果有兴趣&#xff0c;读者可以配合代码阅读本文。 一、什么是负载均衡 1、什么是CPU负载&#xff08;load&#xff09; CPU负载是一个很容易和CPU利用率&#xff08;utility&#xff09;混淆的概念。CPU利用率是CPU忙闲的比例…

全面学习Selenium和Python的Web自动化测试项目实战

目录 摘要&#xff1a; 1.安装依赖项 2.编写测试用例 3.执行测试用例 4.结论 摘要&#xff1a; 随着Web应用程序的不断发展和更新&#xff0c;保证其质量和稳定性变得越来越重要。为了实现这一目标&#xff0c;Web自动化测试已经成为了必不可少的一部分。本文将介绍一个基…

二十、线索关联市场活动(一):查询市场活动

功能需求 用户在线索明细页面,点击"关联市场活动"按钮,弹出线索关联市场活动的模态窗口; 用户在线索关联市场活动的模态窗口,输入搜索条件,每次键盘弹起,根据名称模糊查询市场活动,把所有符合条件的市场活动显示到列表中; 用户选择要关联的市场活动,点击"关联…

SparkStreaming学习——读取socket的数据和kafka生产者的消息

目录 一、Spark Streaming概述 二、添加依赖 三、配置log4j 1.依赖下载好后打开IDEA最左侧的外部库 2.找到spark-core 3.找到apache.spark目录 4.找到log4j-defaults.properties文件 5.将该文件放在资源目录下&#xff0c;并修改文件名 6.修改log4j.properties第19行的…

Vue.js学习-1

一、Vue.js环境准备 官网地址&#xff1a;Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org) Vue.js v2教程&#xff1a;Vue.js (vuejs.org) 在浏览器中安装Vue调试工具&#xff1a;Installation | Vue Devtools (vuejs.org) VSCode安装见这里&#xff1a; 下载vue.j…

每日学术速递4.26

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.AutoNeRF: Training Implicit Scene Representations with Autonomous Agents 标题&#xff1a;AutoNeRF&#xff1a;使用自主代理训练隐式场景表示 作者&#xff1a;Pierre Marz…

macOS 13.4Beta 3(22F5049e)发布

系统介绍 4 月 26 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.4 开发者预览版 Beta 3 更新&#xff08;内部版本号&#xff1a;22F5049e&#xff09;&#xff0c;本次更新距离上次发布隔了 14 天。 macOS Ventura 带来了台前调度、连续互通相机、FaceTime 通…

Go | 一分钟掌握Go | 5 - 切片

作者&#xff1a;Mars酱 声明&#xff1a;本文章由Mars酱编写&#xff0c;部分内容来源于网络&#xff0c;如有疑问请联系本人。 转载&#xff1a;欢迎转载&#xff0c;转载前先请联系我&#xff01; 说明 切片和数组有点像&#xff0c;对于我的理解就是声明了固定长度的就是数…

「 Redis 」RDB和AOF持久化全面解析

「 Redis 」RDB和AOF持久化全面解析 参考&鸣谢 【说透Redis】10分钟彻底理解Redis的持久化机制&#xff1a;RDB和AOF 程序员读书 AOF 持久化是怎么实现的&#xff1f; xiaolinCoding Redis持久化之RDB与AOF 的区别 1024下午茶 文章目录 「 Redis 」RDB和AOF持久化全面解析前…

设计模式之解释器模式(C++)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 一、解释器模式是什么&#xff1f; 解释器模式是一种行为型的软件设计模式&#xff0c;定义了一个解释器&#xff0c;来解释给定语…

C语言函数大全-- q 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- q 开头的函数 1. qsort 1.1 函数说明 函数声明函数功能void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));用于将指定数组按指定顺序进行排序 参数&#xff1a; base &#xff1a; 指…

2023年,企业如何做好团队知识管理?

团队知识管理是一个组织管理中非常重要的组成部分。成熟的企业通常会非常注重团队知识管理的实践&#xff0c;以提高团队的协作效率和整体绩效。本文将介绍成熟企业如何做好团队知识管理&#xff0c;以提高企业的竞争力和创新能力。 一、了解团队知识管理的重要性 团队知识管…

【网络进阶】五种IO网络模型(二)

文章目录 1. 多路复用IO2. 异步IO3. 信号驱动IO 1. 多路复用IO I/O多路复用这个术语可能对一些人来说比较陌生&#xff0c;但提到select/epoll&#xff0c;就容易理解了。在某些场景下&#xff0c;这种I/O方式也被称为事件驱动I/O&#xff08;event-driven I/O&#xff09;。我…

[Gitops--5]APISIX

APISIX Apache APISIX是一款开源的高性能,动态云原生网关.Apache APISIX当前已经覆盖了API网关,LB,Ingress,Service,Mesh等多种场景 1. APISIX部署 使用Helm Chart部署Apache APISIX Ingress Controller Apache APISIX Ingress Controller目前和Apache APISIX网关是强关联的…