案例17 基于Spring Boot+MyBatis的学生信息维护案例

news2024/11/25 7:10:31

一、案例需求

基于Spring Boot+MyBatis实现学生信息的新增、修改、删除、查询功能,并实现MySQL数据库的操作。

MySQL数据库创建学生表(t_student),有主键、姓名、年龄、性别、出生日期、身份证号、电话号码信息。

二、数据初始化

  • 创建t_student表

create table t_student  (
    id varchar(32) not null,
    name varchar(255),
    age int,
    sex varchar(2),
    birthday varchar(20),
    idCard varchar(20),
    phone varchar(20)
);
  • 初始化数据

insert into t_student 
values('1001','zhangsan',20,'1','2000-01-01','370701200001011111','15800000001');
insert into t_student 
values('1002','lisi',20,'1','2000-01-01','370701200001011112','15800000002');

三、代码实现

1. 创建Spring Boot项目

创建Spring Boot项目,项目名称为springboot-student02。

2. 选择依赖

pom文件如下所示:

<dependencies>
    <!--spring boot web-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--mybatis-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.3.0</version>
    </dependency>
    <!--mysql-->
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!--lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

3. 创建配置文件

resources目录下创建application.yml。

# 配置端口号
server:
  port: 8090

# 配置数据源
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/student
    username: root
    password: root

# 配置MyBatis
mybatis:
  mapper-locations: classpath*:mapper/**/*Mapper.xml
  type-aliases-package: com.wfit

4. 创建Constants常量类

com.wfit.boot.commons目录下创建Constants.java。

public class Constants {
    // 默认成功码
    public static final int SUCCESS_CODE = 200;
    public static final String SUCCESS_MSG = "操作成功";
    // 默认失败码
    public static final int ERROR_CODE = 500;
    public static final String ERROR_MSG = "系统异常";
}

5. 创建Result类

com.wfit.boot.commons目录下创建Result.java。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result<T> {

    //响应码
    private int code;
    //响应消息
    private String msg;
    //响应结果
    private T data;

    public static <T> Result<T> success(T data){
        return new Result<>(Constants.SUCCESS_CODE,Constants.SUCCESS_MSG,data);
    }

    public static <T> Result<T> error(T data){
        return new Result<>(Constants.ERROR_CODE,Constants.ERROR_MSG,data);
    }
    
}

6. 创建Student实体类

com.wfit.boot.model目录下创建Student.java。

@Data
public class Student {

    private String id;
    private String name;
    private int age;
    private String sex;
    private String birthday;
    private String idCard;
    private String phone;

}

7. 创建StudentController类

com.wfit.boot.controller目录下创建StudentController.java。

@RestController     //@Controller和@ResponseBody两个注解的结合
@RequestMapping("/student")
public class StudentController {

    @Autowired
    private StudentService studentService;

    /**
     * 新增学生信息
     */
    @PostMapping("/add")    //@RequestMapping(method = {RequestMethod.POST})
    public Result addStudent(@RequestBody Student student){
        studentService.saveStudent(student);
        return Result.success("新增成功!");
    }
    /**
     * 修改学生信息
     */
    @PostMapping("/update")
    public Result updateStudent(@RequestBody Student student){
        studentService.updateStudent(student);
        return Result.success("修改成功!");
    }
    /**
     * 删除学生信息
     */
    @GetMapping("/del")  //@RequestMapping(method = {RequestMethod.GET})
    public Result delStudent(String id){
        studentService.delStudent(id);
        return Result.success("删除成功!");
    }
    /**
     * 查询学生信息
     */
    @GetMapping("/query")
    public Result queryStudent(){
        List<Student> studentList = studentService.queryStudent();
        return Result.success(studentList);
    }
}

8. 创建StudentService接口

com.wfit.boot.service目录下创建StudentService.java。

public interface StudentService {

    public void saveStudent(Student student);

    public void updateStudent(Student student);

    public void delStudent(String id);

    public List<Student> queryStudent();

}

9. 创建StudentServiceImpl类

com.wfit.boot.service.impl目录下创建StudentServiceImpl.java。

@Service
public class StudentServiceImpl implements StudentService {

    @Resource
    private StudentMapper studentMapper;

    @Override
    public void saveStudent(Student student) {
        studentMapper.saveStudent(student);
    }

    @Override
    public void updateStudent(Student student) {
        studentMapper.updateStudent(student);
    }

    @Override
    public void delStudent(String id) {
        studentMapper.delStudent(id);
    }

    @Override
    public List<Student> queryStudent() {
        return studentMapper.queryStudent();
    }
}

10. 创建StudentMapper接口

com.wfit.boot.mapper目录下创建StudentMapper.java。

@Mapper
public interface StudentMapper {

    public void saveStudent(Student student);

    public void updateStudent(Student student);

    public void delStudent(String id);

    public List<Student> queryStudent();
}

11. 创建StudentMapper.xml文件

resources.mapper目录下创建StudentMapper.xml。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wfit.boot.mapper.StudentMapper">
    <!--新增学生信息-->
    <insert id="saveStudent" parameterType="com.wfit.boot.model.Student">
        insert into t_student values(
            #{id},
            #{name},
            #{age},
            #{sex},
            #{birthday},
            #{idCard},
            #{phone}
        )
    </insert>
    <!--修改学生信息-->
    <update id="updateStudent" parameterType="com.wfit.boot.model.Student">
        update t_student
        set name = #{name}, age = #{age}
        where id = #{id}
    </update>
    <!--删除学生信息-->
    <delete id="delStudent" parameterType="java.lang.String">
        delete from t_student where id = #{id}
    </delete>
    <!--查询学生信息-->
    <select id="queryStudent" resultType="com.wfit.boot.model.Student">
        select *
        from t_student
    </select>
</mapper>

12. 项目结构

四、案例测试

1. 测试新增学生信息

2. 测试修改学生信息

3. 测试删除学生信息

4. 测试查询学生信息

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

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

相关文章

07 - 查看、创建、切换和删除分支

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. 查看分支2. 创建和切换分支3. 删除分支 1. 查看分支 git branch -va2. 创建和切换分支 第一种&#xff1a; 创建分支&#xff1a; git branch new_branch切换分支&#xff1a; …

PHP实现在线年龄计算器

1. 输入日期查询年龄 2. php laravel框架实现 代码 /*** 在线年龄计算器*/public function ageDateCal(){// 输入的生日时间$birthday $this->request(birthday);// 当前时间$currentDate date(Y-m-d);// 计算周岁$age date_diff(date_create($birthday), date_create($…

Linux 多进程

目录 0x01 linux中特殊的进程 0x02 进程的标识 0x03 创建子进程 0x01 linux中特殊的进程 0号进程&#xff1a;idle进程&#xff0c;系统启动加载的进程1号进程&#xff1a;systemd进程&#xff0c;系统初始化&#xff0c;是所有进程的祖先进程 init2号进程&#xff1a;kthre…

Zabbix监控Kubernets获取节点模板报错

Preprocessing failed for: {“error”:"Request failed with status code 401: {“kind”:“Status”,“apiVersion”:“v1”,"met ad …1. Failed: Discovery error: TypeError: cannot read property 1 of null. Zabbix 监控 Kubernetes 出现采集错误&#xff0c;…

麒麟系统相关

创建虚拟机 镜像下载地址 选择合适的镜像&#xff0c;进入引导后注意不要选择默认的第一条&#xff0c;选择第二条进入安装程序。 root密码修改 使用命令 sudo passwd root 开启ssh 配置好网络后发现能ping通&#xff0c;但无法ssh连接&#xff0c;ps -ef | grep ssh 得…

基于docker实现主从复制

1&#xff1a;实现主从复制这个过程我是趟过坑的&#xff0c;后面是自己动手搞了几遍都成功了以后才开始决定记录的&#xff0c;&#xff08;所以有的截图和上下文对不上的&#xff0c;比如说docker容器的名字对应不上&#xff0c;大家就用自己的就好&#xff09;&#xff0c;打…

“数据”对于仓库管理有多重要?!

仓库数据的重要性 做好仓库数据管理对企业的重要性不言而喻。通过有效地管理数据&#xff0c;企业可以更好地了解市场需求和库存情况&#xff0c;快速响应市场变化&#xff0c;提高库存周转率和客户满意度&#xff1b;此外&#xff0c;数据管理还可以帮助企业降低库存成本、减…

提升物流管理效率,快递批量查询高手软件助你一臂之力

物流管理中&#xff0c;准确跟踪和掌握快递的物流信息是非常重要的。而快递批量查询高手软件的出现&#xff0c;大大提高了物流管理的效率&#xff0c;为企业带来了诸多便利。 传统的快递查询方式往往需要手动逐个输入快递单号&#xff0c;费时费力且容易出错。而有了快递批量查…

源于传承,擎领未来,新架构、新工艺下的“换心工程”——金融电子化访中电金信副总经理、研究院院长况文川

当前&#xff0c;商业银行的经营环境正在发生着深刻而复杂的变化&#xff0c;在深化改革主旋律的指引下&#xff0c;数字化转型已成为我国商业银行普遍认同、广泛采用的战略性举措。核心系统作为承载银行业务的关键支柱系统&#xff0c;一直是各银行在金融科技建设中重点关注和…

Linux/centos上如何配置管理NFS服务器?

Linux/centos上如何配置管理NFS服务器&#xff1f; 1 NFS基础了解1.1 NFS概述1.2 NFS工作流程 2 安装和启动NFS服务2.1 安装NFS服务器2.2 启动NFS服务 3 配置NFS服务器和客户端3.1 配置NFS服务器3.2 配置NFS客户端 4 实际示例4.1 基本要求4.2 案例实现 1 NFS基础了解 NFS&…

Android UI自动化测试框架—SoloPi简介

1、UI自动化测试简介 软件测试简介 ​软件测试是伴随着软件开发一同诞生的&#xff0c;随着软件规模大型化&#xff0c;结构复杂化&#xff0c;软件测试也从最初的简单“调试”&#xff0c;发展到当今的自动化测试。 ​ 自动化测试是什么呢&#xff1f;自动化测试是把以人为…

解析固态光耦的独特特点和优势

固态光耦概述及其重要性 固态光耦是一种电子元件&#xff0c;具有独特的光电隔离功能&#xff0c;广泛应用于电气控制、通信和电力系统等领域。本文将深入探讨固态光耦的特点和优势&#xff0c;介绍它在市场中的重要性以及如何提高收录和首页排名。 高速、高精度的信号传输 …

Dolphinscheduler简单应用(二)—— 告警通知

一、本章目标 演示Dolphinscheduler的告警通知功能,将SQL任务组件查询返回结果集指定为邮件通知内容(支持为:表格、附件或表格附件三种模板)。二、 前提条件 已完成Dolphinscheduler部署 K8S集群部署,可参考文章:基于K8S环境部署Dolphinscheduler及简单应用其他部署形式,…

LeetCode236. 二叉树的最近公共祖先

236. 二叉树的最近公共祖先 文章目录 [236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/)一、题目二、题解方法一&#xff1a;递归构建祖先数组方法二&#xff1a;一个非常方便的递归 一、题目 给定一个二叉树, 找到该树中…

性能测试|App性能测试需要关注的指标

一、Android客户端性能测试常见指标&#xff1a; 1、内存 2、CPU 3、流量 4、电量 5、启动速度 6、滑动速度、界面切换速度 7、与服务器交互的网络速度 二、预期标准指定原则 1、分析竞争对手的产品&#xff0c;所有指标要强于竞品 2、产品经理给出的预期性能指标数据…

青翼科技自研2路250MSPS DA回放FMC子卡模块

FMC150_V30是一款基于VITA57.1规范的2路125MSPS采样率16位分辨率AD采集、2路250MSPS采样率16位分辨率DA回放FMC子卡模块。该模块遵循VITA57.1规范&#xff0c;可直接与符合VITA57.1规范的FPGA载卡配合使用&#xff0c;板卡ADC器件采用ADI公司的AD9268芯片&#xff0c;板卡DAC器…

DDIM: DENOISING DIFFUSION IMPLICIT MODELS

DDIM: DENOISING DIFFUSION IMPLICIT MODELS 去噪扩散隐式模型DDIM预测噪声生成过程 实验 论文题目&#xff1a;Denoising Diffusion Implicit Models (DDIM) 论文来源&#xff1a;ICLR 2021 论文地址&#xff1a;https://arxiv.org/pdf/2010.02502.pdf 论文代码&#xff1a;ht…

“之江数据安全治理论坛”暨《浙江省汽车数据处理活动规定(专家建议稿)》研讨会顺利召开

研讨会主题 8月10日&#xff0c;“之江数据安全治理论坛”暨《浙江省汽车数据处理活动规定&#xff08;专家建议稿&#xff09;》研讨会在浙江大学计算机创新技术研究院举办。 本次研讨会的主题聚焦于“智能网联汽车的数据安全与数据合规”&#xff0c;邀请行业主管部门和数据…

iptables与firewall的命令的使用

iptables与firewall的命令的使用 安装firewall指令基本使用iptables简介命令查看 IPTABLES 版本查看当前 IPTABLES 规则添加规则修改规则删除某条规则加入白名单备份与还原定义策略 其他 安装 查看是否已安装&#xff1a; CentOS&#xff1a;rpm -qa | grep iptables 安装&am…

推荐一个好用的程序员工具箱,集成了代码生成,云剪切板以及AI能力

给大家推荐一个程序员必备网站&#xff0c;功能方便、实用&#xff0c;页面精美&#xff0c;下面是部分功能截图: 代码生成 云剪切板 工作日报生成 专利文章生成 毕业论文生成 地址: http://119.29.247.153/#/ai-tools​