CRUD - SpringBoot

CRUD - SpringBoot

1、简单的SQL脚本

create database cruddb;
use cruddb;

create table `student`
(
    `student_id`     int primary key auto_increment comment 'ID',
    `student_name`   varchar(20) not null comment '姓名',
    `student_age`    int         not null comment '年龄',
    `student_gender` int         not null comment '性别(0女,1男)'
);

insert into `student`
values (0, '张三', 17, 1),
       (0, '李四', 18, 1),
       (0, '王五', 17, 1),
       (0, '小红', 18, 0),
       (0, '星期八领证', 17, 1);

2、创建项目

在这里插入图片描述

3、代码编写

1、yaml 配置

#设置数据库
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/cruddb?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: root
  thymeleaf:
    cache: false

#mybatis 扫描配置是
mybatis:
  type-aliases-package: com.xqblz.crud.pojo
  mapper-locations: classpath:mybatis/mapper/*.xml
  configuration:
    cache-enabled: true
    map-underscore-to-camel-case: true

2、创建pojo 包,编写实体类

在这里插入图片描述

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {

    private Integer studentId;

    private String  studentName;

    private Integer  studentAge;

    private Integer  studentGender;

}
 

3、创建 mapper 包,写 mapper 文件

在这里插入图片描述

@Mapper
public interface StudentMapper {

    /**
     * 按姓名查找学生
     * @param name
     * @return
     */
    List<Student> findStudentByName(@Param("name") String name);

    /**
     * 按ID查找学生
     * @param id
     * @return
     */
    Student findStudentById(@Param("id") Integer id);

    /**
     * 添加学生
     * @param student
     * @return
     */
    int addStudent(Student student);

    /**
     * 修改学生
     * @param student
     * @return
     */
    int updateStudent(Student student);

    /**
     * 根据ID删除学生
     * @param id
     * @return
     */
    int deleteStudentById(@Param("id") Integer id);

}

4、创建 mybatis/mapper 目录,编写 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.it.crud.mapper.StudentMapper">
    <select id="findStudentByName" resultType="com.it.crud.pojo.Student">
        select student_id, student_name, student_age, student_gender
        from student
        <where>
            <if test="name != null and name != ''">
                student_name like concat('%', #{name} , '%')
            </if>
        </where>
    </select>

    <insert id="addStudent">
        insert into `student`
        values (0, #{studentName}, #{studentAge}, #{studentGender})
    </insert>

    <update id="updateStudent">
        update student
        set student_name   = #{studentName},
            student_age    = #{studentAge},
            student_gender = #{studentGender}
        where student_id = #{studentId}
    </update>

    <delete id="deleteStudentById">
        delete
        from student
        where student_id = #{id}
    </delete>

    <select id="findStudentById" resultType="com.it.crud.pojo.Student">
        select student_id, student_name, student_age, student_gender
        from student
        where student_id = #{id}
    </select>
</mapper>

5、创建 service

在这里插入图片描述

public interface StudentService {
    /**
     * 按姓名查找学生
     * @param name
     * @return
     */
    List<Student> findStudentByName(String name);

    /**
     * 按ID查找学生
     * @param id
     * @return
     */
    Student findStudentById(Integer id);

    /**
     * 添加学生
     * @param student
     * @return
     */
    boolean addStudent(Student student);

    /**
     * 修改学生
     * @param student
     * @return
     */
    boolean updateStudent(Student student);

    /**
     * 根据ID删除学生
     * @param id
     * @return
     */
    boolean deleteStudentById(Integer id);
}

6、创建 impl 实现 service 接口

在这里插入图片描述

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentMapper studentMapper;

    @Override
    public List<Student> findStudentByName(String name) {
        return studentMapper.findStudentByName(name);
    }

    @Override
    public Student findStudentById(Integer id) {
        return studentMapper.findStudentById(id);
    }

    @Override
    public boolean addStudent(Student student) {
        return studentMapper.addStudent(student) > 0;
    }

    @Override
    public boolean updateStudent(Student student) {
        return studentMapper.updateStudent(student) > 0;
    }

    @Override
    public boolean deleteStudentById(Integer id) {
        return studentMapper.deleteStudentById(id) > 0;
    }
}

7、创建 controller

在这里插入图片描述

@Controller
@RequestMapping("/student")
public class StudentController {

    @Autowired
    private StudentService studentService;

    @GetMapping("/findStudent")
    public String findStudent(@RequestParam(name = "name", required = false) String name, Model model) {
        model.addAttribute("studentList", studentService.findStudentByName(name));
        model.addAttribute("name", name);
        return "index";
    }

    /**
     * 跳转到添加页面
     * @return
     */
    @GetMapping("/goAddStudent")
    public String goAddStudent() {
        return "add";
    }

    @PostMapping("/addStudent")
    public String addStudent(Student student, Model model) {
        if (studentService.addStudent(student)) {
            model.addAttribute("info", "success");
        } else {
            model.addAttribute("info", "error");
        }
        return "add";
    }

    /**
     * 跳转到修改页面
     * @return
     */
    @GetMapping("/goUpdateUpdate")
    public String goUpdateUpdate(@RequestParam("id") Integer id, Model model) {
        model.addAttribute("student", studentService.findStudentById(id));
        return "update";
    }

    @PostMapping("/updateStudent")
    public String updateStudent(Student student, Model model) {
        if (studentService.updateStudent(student)) {
            model.addAttribute("info", "success");
        } else {
            model.addAttribute("info", "error");
        }
        return "update";
    }

    @RequestMapping("/deleteStudent")
    public String deleteStudent(@RequestParam("id") Integer id, Model model) {
        if (studentService.deleteStudentById(id)) {
            model.addAttribute("info", "success");
        } else {
            model.addAttribute("info", "error");
        }
        return "index";
    }


}

8、页面创建

在这里插入图片描述

9、index 页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<div style="text-align: center">
    <form method="get" action="/student/findStudent">
        学生姓名: <input name="name" th:value="${ name }">
        <input type="submit" value="查询"> <a href="/student/goAddStudent">添加</a>
    </form>

    <table width="500" border="1" style="margin: 0 auto">
        <tr>
            <td>ID</td>
            <td>姓名</td>
            <td>年龄</td>
            <td>性别</td>
            <td>操作</td>
        </tr>
        <tr th:each="student : ${studentList}">
            <td th:text="${student.studentId}"></td>
            <td th:text="${student.studentName}"></td>
            <td th:text="${student.studentAge}"></td>
            <td>
                <span th:if="${ student.studentGender == 0 }"></span>
                <span th:if="${ student.studentGender == 1 }"></span>
            </td>
            <td>
                <a th:href="'/student/goUpdateUpdate?id='+${student.studentId}">修改</a>
                <a th:href="'/student/deleteStudent?id='+${student.studentId}">删除</a>
            </td>
        </tr>
    </table>

</div>

<!-- 信息提示 -->
<script th:inline="javascript">
    // 获取返回的 info 信息
    let info = [[ ${ info }]];
    if (info != null){
        if (info === 'success') {
            alert("删除成功");
        } else {
            alert("出现异常情况,删除失败");
        }
        location.href = '/student/findStudent';
    }
</script>
</body>
</html>

10、add 页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>添加</title>
</head>
<body>
<h1>添加信息</h1>
<form action="/student/addStudent" method="post">
    <input type="hidden" name="studentId">
    姓名: <input type="text" name="studentName"><br>
    年龄: <input type="number" name="studentAge"><br>
    性别:
    <input type="radio" value="1" name="studentGender"><input type="radio" value="0" name="studentGender"><br>
    <input value="添加" type="submit">
    <a href="/student/findStudent">返回</a>
</form>

<script th:inline="javascript">
    // 获取返回的 info 信息
    let info = [[ ${ info }]];
    if (info != null){
        if (info === 'success') {
            alert("添加成功");
        } else {
            alert("出现异常情况,添加失败");
        }
        location.href = '/student/findStudent';
    }
</script>
</body>
</html>

11、update 页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>修改</title>
</head>
<body>
<h1>修改信息</h1>
<form action="/student/updateStudent" method="post">
    <input type="hidden" name="studentId" th:value="${ student.studentId }">
    姓名: <input type="text" name="studentName" th:value="${ student.studentName }"><br>
    年龄: <input type="number" name="studentAge" th:value="${ student.studentAge }"><br>
    性别:
    <input type="radio" value="1" name="studentGender" th:checked="${ student.studentGender == 1 }"><input type="radio" value="0" name="studentGender" th:checked="${ student.studentGender == 0 }"><br>
    <input value="修改" type="submit">
    <a href="/student/findStudent">返回</a>
</form>

<script th:inline="javascript">
    // 获取返回的 info 信息
    let info = [[ ${ info }]];
    if (info != null){
        if (info === 'success') {
            alert("修改成功");
        } else {
            alert("出现异常情况,修改失败");
        }
        location.href = '/student/findStudent';
    }
</script>

</body>
</html>

4、代码完成启动测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在风能领域,准确预测风速对于风电场的运行与管理至关重要。Matlab作为一个强大的数学计算和数据分析平台,被广泛应用于风速预测模型的构建。本文将深入探讨基于四种风速——随机风、基本风、阵风和渐变风的组合风速预测技术。 我们来理解这四种风速类型: 1. **随机风**:随机风是指风速呈现出随机性的变化,通常由大气湍流引起。在建模中,通常通过统计方法如高斯分布或Weibull分布来模拟这种不确定性。 2. **基本风**:基本风速是指在无特定扰动条件下的平均风速,它是长期观测结果的平均值,通常用于结构设计和风能评估。 3. **阵风**:阵风是短时间内风速显著增强的现象,对建筑物和风力发电机造成的主要威胁之一。阵风的预测涉及到风的脉动特性分析。 4. **渐变风**:渐变风是指风速随时间和空间逐渐变化的过程,常见于风向转变或地形影响下的风场变化。 在Matlab中,利用这四种风速类型进行组合预测,可以提高预测的准确性。预测模型可能包括以下几个步骤: 1. **数据收集与预处理**:收集历史风速数据,包括随机风、基本风、阵风和渐变风的数据,进行异常值检测、缺失值填充以及数据标准化。 2. **特征工程**:提取风速变化的相关特征,如平均值、标准差、极值、频率分布等,这些特征可能对预测有重要影响。 3. **模型选择**:可以选择多种预测模型,如时间序列分析(ARIMA、状态空间模型等)、机器学习算法(线性回归、决策树、支持向量机、神经网络等)或深度学习模型(LSTM、GRU等)。 4. **模型训练**:利用历史数据训练选定的模型,调整模型参数以优化性能,例如通过交叉验证来避免过拟合。 5. **模型验证与评估**:使用独立的测试集验证模型预测效果,常见的评估指标有均方误差(MSE)、平均绝对误差(MAE)和决定系数(R²)。 6. **组合预测**:结合四种风速的不同模型预测结果,可以采用加权平均、集成学习(如bagging、boosting)等方式,以提升整体预测精度。 7. **实时更新与动态调整**:实际应用中,模型需要不断接收新的风速数据并进行在线更新,以适应风场环境的变化。 通过以上步骤,可以构建一个综合考虑各种风速特性的预测系统,这对于风电场的功率输出预测、风电设备的维护计划以及电网调度都具有重要价值。然而,需要注意的是,每个风场的地理环境、气候条件和设备状况都有所不同,因此模型的建立应根据实际情况进行定制和优
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值