赞
踩
友情提示:本文代码较长,逻辑上较为复杂,若有需要建议详细阅读!!!
目录
3.3 StudentDaoImpl.java类(Dao-impl软件包中)
3.4 StudentService接口类(Service软件包中)
3.5 StudentServiceimpl.java类(Service—Impl软件包中)
3.6 StudentController.java类(Controller软件包中)
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 目录结构
项目名称 | 路径 | 软件包名 | 软件包名/类接口名 | 备注 | |
---|---|---|---|---|---|
3-1 | src>main>java> com>example> unit31 | controller | StudentController | 这是最终用来配置8080端口访问信息及修改相关数据的 | |
dao | impal | StudentDaoImpl | 这是用来实现数据库命令 查询有关功能的 | ||
StudentDao | 定义Dao层相关数据 | ||||
enity | Student | 这是对数据库建立的字段进行一个实体类 | |||
service | impal | StudentServiceImpl | 创建CustomerDao接口对象 | ||
StudentService | 定义抽象方法 | ||||
src>main | resources | application.yml | 修改数据库的相关配置信息 |
以上便是本代码的目录结构,下面将依次把目录的文件代码进行讲解相关配置信息,首先讲一下数据库的配置文件,具体如下:
本文章使用的数据库是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当中进行方法代码的实现配置
这是对数据库建立的表名进行实体类构造,然后分别进行有参和无参方法的构造。这里要特别说明,如果手动敲写,一定要检查是否与数据库表中的字段名一致,不然或导致程序出错,建议粘贴复制。
- 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;
- }
- }
这是用来定义抽象方法的
- 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);
- }
这是通过使用@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);
- }
- }
这是用来定义抽象方法的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);
-
- }
这是用来创建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);}
- }
这是一个控制类,用于访问网页实现的,以及添加、修改、删除等功能实现的一个类
- 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将自己的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等语句
下面将运行链接和截图进行表示
单击控制台,开始运行,需出现如图9所示,表示程序正确
图9 id运行正确效果
图10 获取全部信息显示效果
图11 通过id信息显示效果
图12 添加学生信息成功显示效果
图13 添加学生信息成功后数据库显示效果
图14 修改学生信息成功显示效果
图15 修改学生信息成功后数据库显示效果
图16 删除学生信息成功显示效果
图17删除学生信息成功后数据库显示效果
图18 navicat数据库显示效果
以上便是修改、增加等操作后的显示结果,同时本文功能讲解完成,有需要或能用到的,大家可以依次按操作编写,或直接在我的资源中下载导包使用,若有任何问题,请联系我。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。