ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

软件工程第二节课 《springboot 连接 sql数据库,实现 增删改查功能》

2021-03-29 20:58:20  阅读:213  来源: 互联网

标签:springboot RequestParam 改查 college sql College collegeCode public String


文章目录


实验目标

1. 安装mysql, 建立一张学院表, 主要字段包括学院代码、学院名称、院长姓名、院长工号等。
2. 配置spring boot , 连接到mysql
3. 学习JPA(Java Persistence API) , 学会使用jpa查询数据
4. 学习mybatis plus(或者mybatis),学会使用其访问数据库进行查询
5. 编写相关的controller,http://localhost/query 返回学院表中所有的记录,显示在网页上, 可以直接是json数据,(也可以自学模板引擎,一行一行进行显示。)
6. 编写添加、删除、修改的后端代码,学会使用postman 等工具,对数据进行删除、添加、修改(无需编写前端的网页代码, 当然也可以采用模板引擎, 写网页进行删除)

一、环境配置过程

  1. 安装Mysql、navicat(破解一下)过程出现的错误
    一般第一次安装mysql不会出现这样的问题
    如上图所示,starting the server失败,通常是因为上次安装的该软件未清除干净,其次要注意看log的内容,解决方法如下:
    (1) 卸载mySQL软件,检查安装目录是否已卸载删除干净
    (2) 开始-运行-输入regedit打开注册表编辑器,找到HKEY_LOCAL_MACHINE,选中HKEY_LOCAL_MACHINE,点击右键查找,在项上打上勾,其他的都不选,然后输入mysql,然后将HKEY_LOCAL_MACHINE中找到的关于mysql的文件夹删掉(多查找几次,有多个,都删掉)。
    (3)删除隐藏目录,首先在文件夹选项中勾选
    “显示隐藏文件、文件夹河驱动器",然后在C盘找到文件夹C:\ProgramData,删除里面的MySQL文件夹。
    (4) 重新安装软件

  1. 安装配置spring boot、maven遇到的坑:
    老师教学过程中使用的idea支持自动导入包的功能,而最新的idea(2020版本)已经没有了这个支持,在网上寻找很多方法,但是最终还是卸载了,安装了旧版的,因此maven也需要重新配置。
    spring版本也是,先开始使用2.x版本,后来按照老师的教学也出现了报错的情况。
    因此,下次安装软件时,要么按照老师的要求安装对应环境,要么上网查询一下哪个版本最好,可以少走弯路。
    建议版本:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    修改spring版本:
    在这里插入图片描述

  2. 安装postman

二、配置过程

1.spring boot assistant与lombok

我下载的2017版本的idea中没有springboot initialize很不方便,上网查询,在idea中下载了springboot assistant插件。用这个插件创建项目十分方便,只要勾中对应的依赖就可以自动帮你在pox.xml中引入对应的依赖。
在这里插入图片描述

实验过程中,因为有大量的get、set方法,于是下载lombok插件(让idea环境清楚@Data的含义),并引入对应的依赖,只要在对应的类前面加上@Data就可以自动生成 get和set 方法。

在这里插入图片描述

2.一些缺包的错误:

大部分可以通过快捷键alt+enter解决:把光标放在代码显红的地方,就可以自动引入需要的包
其余的:
在这里插入图片描述
解决方法:
import org.junit.jupiter.api.Test修改成 import org.junit.Test

三、代码部分

1.配置application.yml

server:
  port: 11111
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/chen yun?autoReconnect=true&useSSL=false
    username: root
    password: 1632367883
  jpa:
    hibernate:
      ddl-auto: update
      show-sql: true

解释:

  • server端口号,需要找空闲的,用命令stat -a|findstr 11111发现,11111号端口是空闲的。(如果运行程序时发生端口被占用,可以Kill那个进程,具体命令上网搜一搜)
  • show-sql:true 表示通过server查询时,在console中会显示出生成的sql语句

2.编写实体类College:

@Entity
@Data
public class College {
    @Id
    private String collegeCode;

    private String collegeName;

    private String masterName;

    private String masterNum;
}

3.QueryRepository接口

在这里插入图片描述
作用是:利用接口jpaRepository中默认的方法,避免写方法了,所有的数据库语句,都可以用jpa的接口写出来。即使连接不同的数据库,运用jpa的接口写出来的方法依然可以移植过去。为程序员省去了学习不同数据库语言的麻烦!

4.编写QueryController

其中@RestController=@Controller+@ResponseBody
@Autowired自动导入,避免了new一个对象

@RestController
public class QueryController {
    @Autowired
    private CollegeRepository collegeRepository;

    @GetMapping(value="/query")
    public List<College> collegeList(){
        //返回所有学院记录
        return collegeRepository.findAll();
    }

    @PostMapping(value="/query")
    public College collegeAdd(@RequestParam("collegeCode") String collegeCode,
                              @RequestParam("collegeName") String collegeName,
                              @RequestParam("masterName") String masterName,
                              @RequestParam("masterNum") String masterNum){
        //增加学院记录
        College college = new College();
        college.setCollegeCode(collegeCode);
        college.setCollegeName(collegeName);
        college.setMasterName(masterName);
        college.setMasterNum(masterNum);

        return  collegeRepository.save(college);
    }

    @GetMapping(value="/query/{collegeCode}")
    public College collegeFindOne(@PathVariable("collegeCode") String collegeCode)
    {
        //查询某学院信息
        return collegeRepository.findOne(collegeCode);
    }

    @PutMapping(value = "/query/{collegeCode}")
    public College collegeUpdate(@PathVariable("collegeCode") String collegeCode,
                                 @RequestParam("collegeName") String collegeName,
                                 @RequestParam("masterName") String masterName,
                                 @RequestParam("masterNum") String masterNum){
        //修改学院记录
        College college = new College();
        college.setCollegeCode(collegeCode);
        college.setCollegeName(collegeName);
        college.setMasterName(masterName);
        college.setMasterNum(masterNum);

        return collegeRepository.save(college);
    }

    @DeleteMapping(value = "/query/{collegeCode}")
    public void collegeDelete(@PathVariable("collegeCode") String collegeCode){
        collegeRepository.delete(collegeCode);
        //删除某个学院记录
    }
}

四、Debug部分

1.启动应用报错

在这里插入图片描述
解决方法:在url后面添加一串代码
在这里插入图片描述

2.端口被占用

3.功能出错

查询没有返回值:
在这里插入图片描述
问题在于:我们定义的类college,对应于数据库中同名的表,而我在数据库中创建的表叫:学院,所以冲突了。
在这里插入图片描述
在这里插入图片描述
问题在于:表中的属性对应college中的属性值,所以删除《学院》表,保留《college》表,并在其中添加数据

4.@PathVariable和@RequestParam注解的混淆

在这里插入图片描述
修改如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

1.代码之后会进行重构,因为为了保障以后扩展和修改的可能性,需要定义比如Service的接口等等。

2.经过验证,项目的基本功能是正确地实现的。

标签:springboot,RequestParam,改查,college,sql,College,collegeCode,public,String
来源: https://blog.csdn.net/weixin_43656857/article/details/115308625

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有