用GPT4实现SSM框架实现学生信息管理系统的登录和增删改查

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 用GPT4实现SSM框架实现学生信息管理系统的登录和增删改查

下面介绍一下用GPT4.0生成的SSM框架相关的登录和增删改查代码。没有加css样式。

1.创建数据库和表结构

CREATE DATABASE student_management;
USE student_management;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
);
CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `age` int(11) NOT NULL,
  `gender` varchar(255) NOT NULL,
  `address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

2.配置SSM框架(以Maven为例)

在pom.xml文件中添加相关依赖:

<!-- spring -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.10</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.10</version>
</dependency>
<!-- mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.6</version>
</dependency>
<!-- mysql -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.27</version>
</dependency>

3.创建实体类、DAO层、Service层和Controller层

3.1实体类

Student.java:

public class Student {
    private int id;
    private String name;
    private int age;
    private String gender;
    private String address;
    // 构造方法、getter和setter方法省略
}

User.java:

public class User {
    private int id;
    private String username;
    private String password;
    // 构造方法、getter和setter方法省略
}

3.2DAO层(Mapper)

StudentMapper.java:

public interface StudentMapper {
    List<Student> findAll();
    Student findById(int id);
    void insert(Student student);
    void update(Student student);
    void delete(int id);
}

UserMapper.java:

public interface UserMapper {
    User findByUsername(String username);
}

3.3Service层

StudentService.java:

public interface StudentService {
    List<Student> findAll();
    Student findById(int id);
    void insert(Student student);
    void update(Student student);
    void delete(int id);
}

StudentServiceImpl.java:

@Service
public class StudentServiceImpl implements StudentService {
    @Autowired
    private StudentMapper studentMapper;
    @Override
    public List<Student> findAll() {
        return studentMapper.findAll();
    }
    @Override
    public Student findById(int id) {
        return studentMapper.findById(id);
    }
    @Override
    public void insert(Student student) {
        studentMapper.insert(student);
    }
    @Override
    public void update(Student student) {
        studentMapper.update(student);
    }
    @Override
    public void delete(int id) {
        studentMapper.delete(id);
    }
}

UserService.java:

public interface UserService {
    User findByUsername(String username);
}

UserServiceImpl.java:

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public User findByUsername(String username) {
        return userMapper.findByUsername(username);
    }
}

3.4Controller层

StudentController.java

@Controller
@RequestMapping("/students")
public class StudentController {
    @Autowired
    private StudentService studentService;
    @GetMapping
    public String list(Model model) {
        List<Student> students = studentService.findAll();
        model.addAttribute("students", students);
        return "student_list";
    }
    @PostMapping
    public String add(Student student) {
        studentService.insert(student);
        return "redirect:/students";
    }
    @PutMapping("/{id}")
    public String update(@PathVariable int id, Student student) {
        student.setId(id);
        studentService.update(student);
        return "redirect:/students";
    }
    @DeleteMapping("/{id}")
    public String delete(@PathVariable int id) {
        studentService.delete(id);
        return "redirect:/students";
    }
}

UserController.java

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    @PostMapping("/login")
    public String login(String username, String password, HttpSession session) {
        User user = userService.findByUsername(username);
        if (user != null && user.getPassword().equals(password)) {
            session.setAttribute("user", user);
            return "redirect:/students";
        } else {
            return "login_fail";
        }
    }
}

4.配置Spring和MyBatis

4.1Spring

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <context:component-scan base-package="com.example.demo"/>
    <mvc:annotation-driven/>
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/student_management?useSSL=false&amp;serverTimezone=UTC"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.example.demo.mapper"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".html"/>
    </bean>
</beans>

mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <typeAliases>
        <typeAlias type="com.example.demo.entity.Student" alias="Student"/>
        <typeAlias type="com.example.demo.entity.User" alias="User"/>
    </typeAliases>
    <mappers>
        <mapper resource="com/example/demo/mapper/StudentMapper.xml"/>
        <mapper resource="com/example/demo/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

4.2mapper

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.example.demo.mapper.StudentMapper">
    <resultMap id="StudentResult" type="Student">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="age" property="age"/>
        <result column="gender" property="gender"/>
        <result column="address" property="address"/>
    </resultMap>
    <select id="findAll" resultMap="StudentResult">
        SELECT * FROM student
    </select>
    <!-- 省略其他的select、insert、update和delete语句 -->
</mapper>

UserMapper.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.example.demo.mapper.UserMapper">
    <resultMap id="UserResult" type="User">
        <id column="id" property="id"/>
        <result column="username" property="username"/>
        <result column="password" property="password"/>
    </resultMap>
    <select id="findByUsername" resultMap="UserResult" parameterType="String">
        SELECT * FROM user WHERE username = #{username}
    </select>
</mapper>

5.创建前端界面

login.html:

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <form action="/user/login" method="post">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username">
        <br>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password">
        <br>
        <input type="submit" value="Login">
    </form>
</body>
</html>

student_list.html:

<!DOCTYPE html>
<html>
<head>
    <title>Student List</title>
</head>
<body>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Age</th>
                <th>Gender</th>
                <th>Address</th>
            </tr>
        </thead>
        <tbody>
            <!-- 使用循环遍历students列表,显示学生信息 -->
            <#list students as student>
                <tr>
                    <td>${student.id}</td>
                                        <td>${student.name}</td>
                    <td>${student.age}</td>
                    <td>${student.gender}</td>
                    <td>${student.address}</td>
                    <td>
                        <a href="/students/edit/${student.id}">Edit</a>
                        <a href="/students/delete/${student.id}">Delete</a>
                    </td>
                </tr>
            </#list>
        </tbody>
    </table>
    <a href="/students/add">Add Student</a>
</body>
</html>

add_student.html:

<!DOCTYPE html>
<html>
<head>
    <title>Add Student</title>
</head>
<body>
    <form action="/students" method="post">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name">
        <br>
        <label for="age">Age:</label>
        <input type="number" id="age" name="age">
        <br>
        <label for="gender">Gender:</label>
        <select id="gender" name="gender">
            <option value="Male">Male</option>
            <option value="Female">Female</option>
        </select>
        <br>
        <label for="address">Address:</label>
        <input type="text" id="address" name="address">
        <br>
        <input type="submit" value="Add Student">
    </form>
</body>
</html>

edit_student.html:

<!DOCTYPE html>
<html>
<head>
    <title>Edit Student</title>
</head>
<body>
    <form action="/students/${student.id}" method="post">
        <input type="hidden" name="_method" value="PUT"> <!-- 用于模拟PUT请求 -->
        <label for="name">Name:</label>
        <input type="text" id="name" name="name" value="${student.name}">
        <br>
        <label for="age">Age:</label>
        <input type="number" id="age" name="age" value="${student.age}">
        <br>
        <label for="gender">Gender:</label>
        <select id="gender" name="gender">
            <option value="Male" <#if student.gender=='Male'>selected</#if>>Male</option>
            <option value="Female" <#if student.gender=='Female'>selected</#if>>Female</option>
        </select>
        <br>
        <label for="address">Address:</label>
        <input type="text" id="address" name="address" value="${student.address}">
        <br>
        <input type="submit" value="Update Student">
    </form>
</body>
</html>

这些配置和示例代码提供了一个关于如何在SSM项目中配置组件和实现基本功能的概念。在实际开发过程中,请务必根据需求和约束调整配置和代码。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
7月前
|
数据可视化 API Swift
全模态图像模型Nexus-Gen对齐GPT-4o!同时搞定,数据、训练框架、模型全面开源
OpenAI GPT-4o发布强大图片生成能力后,业界对大模型生图能力的探索向全模态方向倾斜,训练全模态模型成研发重点。
348 17
|
5月前
|
SQL Java 数据库连接
2-SSM框架篇
Spring框架核心知识点总结,涵盖IOC、DI、Bean作用域、事务管理、AOP、Spring MVC流程及MyBatis相关问题。内容包括控制反转与依赖注入原理、Bean生命周期与线程安全、事务传播机制、JDK与CGLIB代理区别、MyBatis动态SQL与缓存机制等高频面试题。
118 0
|
SQL 数据采集 自然语言处理
NL2SQL之DB-GPT-Hub<详解篇>:text2sql任务的微调框架和基准对比
NL2SQL之DB-GPT-Hub<详解篇>:text2sql任务的微调框架和基准对比
|
9月前
|
存储 Java 关系型数据库
ssm151大学生就业信息管理系统+jsp(文档+源码)_kaic
大学生就业信息管理系统基于现代经济快速发展和信息化技术的升级,旨在通过软件工具提升数据管理效率。该系统利用SSM框架、Java语言和Mysql数据库开发,实现数据的科学化、规范化与自动化管理。系统界面简洁美观,功能模块布局合理,提供高效的数据处理能力,并注重数据安全。通过此系统,管理者能够快速处理大量信息,提高工作效率,同时确保数据的安全性和可靠性。关键词:大学生就业信息管理系统;SSM框架;Mysql;自动化。
|
10月前
|
Java 关系型数据库 MySQL
ssm027学校运动会信息管理系统(文档+源码)_kaic
本文介绍了基于B/S结构的学校运动会信息管理系统开发过程。该系统采用JSP技术和MySQL数据库,确保了系统的安全性和稳定性。系统界面友好、操作简便,涵盖系统概述、分析、设计、数据库设计和测试等环节,实现了学校运动会信息管理的重要功能。经过测试,系统运行稳定,操作便捷,具备全面的功能、良好的可扩展性和维护性,有效提升了运动会信息管理的效率和准确性。关键词:学校运动会信息管理;B/S结构;JSP技术;MYSQL数据库。
|
9月前
|
前端开发 Java 数据库连接
Spring MVC 扩展和SSM框架整合
通过以上步骤,我们可以将Spring MVC扩展并整合到SSM框架中。这个过程包括配置Spring MVC和Spring的核心配置文件,创建控制器、服务层和MyBatis的Mapper接口及映射文件。在实际开发中,可以根据具体业务需求进行进一步的扩展和优化,以构建更加灵活和高效的企业级应用程序。
255 5
|
10月前
|
Java 关系型数据库 MySQL
ssm063基于SSM框架的德云社票务系统的设计与实现(文档+源码)_kaic
基于SSM框架的德云社票务系统旨在解决传统相声订票方式费时费力的问题,提供便捷的在线订票平台。系统采用Java技术、MySQL数据库,结合B/S架构,确保数据安全性和操作简便性。用户可轻松查询、预订相声票务信息,管理员则能高效管理票务和会员信息。该系统功能齐全、运行稳定,适用于现代信息化生活需求,有效提升德云社的票务管理效率与用户体验。
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
202 0
|
存储 SQL 数据库
Python 金融编程第二版(GPT 重译)(四)(4)
Python 金融编程第二版(GPT 重译)(四)
189 3
|
存储 NoSQL 索引
Python 金融编程第二版(GPT 重译)(一)(4)
Python 金融编程第二版(GPT 重译)(一)
237 2