SpringBoot实现CURD

article/2025/9/26 10:06:50

SpringBoot实现CURD

 项目列表

Pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.1.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.lin</groupId><artifactId>springboot0711</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot0711</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.20</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>5</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.7.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.1.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId><version>2.3.1.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><version>2.3.1.RELEASE</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

 

Bean

User

package com.lin.springboot0711.Bean;public class User {private int id;private String name;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", password='" + password + '\'' +'}';}
}

 Controller  

 ModifyUserController

package com.lin.springboot0711.Controller;import com.lin.springboot0711.Bean.User;
import com.lin.springboot0711.Service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;@Controller
public class ModifyUserController {@ResourceUserService userService;//查询所有用户@RequestMapping("/users")public String showUsers(ModelMap modelMap){List<User> userList=userService.queryAllUser();modelMap.addAttribute("userList",userList);return "users";}//    新增用户@RequestMapping("addUser")@ResponseBodypublic Map addUser(User user){int flag=userService.addUser(user);Map<String,Object>map=new HashMap<String ,Object>();if (flag==1) {map.put("msg","新增用户成功");return map;}else {map.put("msg","新增用户失败");return map;}}
//    根据用户ID删除用户信息@RequestMapping(value = "/deleteUser+{id}")public String dropUser(@PathVariable("id")String id ,ModelMap modelMap){int flag=userService.dropUser(id);List<User>userList=userService.queryAllUser();modelMap.addAttribute("userList",userList);if (flag==1){return "users";}else{return "error";}}
//    根据用户ID查询用户信息@RequestMapping("/user+{id}")public String queryUser(@PathVariable("id") String id,ModelMap modelMap){User user=userService.queryUserById(id);modelMap.addAttribute("user",user);return "userInfo";}
//    根据用户ID来修改用户信息@RequestMapping("/modifyUser")@ResponseBodypublic Map modifyUser(User user){int flag=userService.modifyUser(user);Map<String,Object>map =new HashMap<>();if (flag==1){map.put("msg","修改用户信息成功");return map;}else {map.put("msg", "修改用户信息失败");return map;}}}

DAO

package com.lin.springboot0711.Dao;import com.lin.springboot0711.Bean.User;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface UserMapper {public User getInfo(@Param("name") String name,@Param("password") String password);public User selectUserById(String id);public  int insertUser(User user);int updateUser(User user);int deleteUser(String id);List<User> getAllUser();
}

Service 

 

package com.lin.springboot0711.Service;import com.lin.springboot0711.Bean.User;import java.util.List;public interface UserService {User loginIn(String name,String password);User queryUserById(String id);int addUser(User user);int dropUser(String id);int modifyUser(User user);List<User>queryAllUser();
}

ServiceImpl

 

package com.lin.springboot0711.ServiceImpl;import com.lin.springboot0711.Bean.User;
import com.lin.springboot0711.Dao.UserMapper;
import com.lin.springboot0711.Service.UserService;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.List;@Service
public class UserServiceImpl implements UserService {
//    将DAO注入Service层@Resourceprivate UserMapper userMapper;@Overridepublic User loginIn(String name,String password){return userMapper.getInfo(name,password);}@Overridepublic User queryUserById(String id){return userMapper.selectUserById(id);}@Overridepublic int addUser(User user){int aFlag=userMapper.insertUser(user);return aFlag;}@Overridepublic int dropUser(String id){int dFlag=userMapper.deleteUser(id);return  dFlag;}@Overridepublic int modifyUser(User user){int mFlag=userMapper.updateUser(user);return mFlag;}@Overridepublic List<User>queryAllUser(){return userMapper.getAllUser();}
}


Springboot0711Application

package com.lin.springboot0711;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.lin.springboot0711.Dao")
public class Springboot0711Application {public static void main(String[] args) {SpringApplication.run(Springboot0711Application.class, args);}}

 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.lin.springboot0711.Dao.UserMapper"><select id="getInfo" resultType="com.lin.springboot0711.Bean.User">SELECT * FROM userWHEREname = #{name} AND password = #{password}</select>
<!--    根据ID查询用户信息--><select id="selectUserById"  parameterType="String" resultType="com.lin.springboot0711.Bean.User">select * from user where id=#{id};</select>
<!--    插入新用户 id自增--><insert id="insertUser" parameterType="com.lin.springboot0711.Bean.User" useGeneratedKeys="true" keyProperty="id">insert into user(name, password) VALUES (#{name},#{password});</insert><delete id="deleteUser" parameterType="String">delete  from user where id=#{id};</delete><!--根据ID修改用户信息,返回数据库操作影响行数,为0则是失败--><update id="updateUser" parameterType="com.lin.springboot0711.Bean.User">update user set name=#{name} ,password=#{password} where id=#{id};</update><select id="getAllUser" resultType="com.lin.springboot0711.Bean.User">select * from user;</select></mapper>

layui框架包(空间查看)

 

 login.html

 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>login</title>
</head>
<body>
<form role="form" action = "/loginIn" method="post">账号:<input type="text" id="name" name = "name"> <br>密码:<input type="password" id = "password" name = "password"> <br><input type="submit" id = "login" value = "login">
</form></body>
</html>

error.html

 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>error</title>
</head>
<body>
<h1>登录失败!</h1>
</body>
</html>

success.html

 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>success</title>
</head>
<body>
<h1>登录成功!</h1>
</body>
</html>

 userInfo.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>UserInfo</title><!-- 新 Bootstrap4 核心 CSS 文件 --><link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css"><script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script><!-- bootstrap.bundle.min.js 用于弹窗、提示、下拉菜单,包含了 popper.min.js --><script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script><!-- 最新的 Bootstrap4 核心 JavaScript 文件 --><script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div id="modifyUser"><form name="modifyUser"><div class="form-group"><label for="id">ID:</label><input type="text" class="form-control" name="id" id="id" th:value="${user.getId()}" disabled></div><div class="form-group"><label for="name">name:</label><input type="text" class="form-control" name="name" id="name" th:value="${user.getName()}"></div><div class="form-group"><label for="pwd">Password:</label><input type="text" class="form-control" name="pwd" id = "pwd" th:value="${user.getPassword()}"></div>
<!--        <div class="form-check">-->
<!--            <label for="role">role:</label>-->
<!--            <select class="form-control" name="role" id = "role" th:value="${user.getRole()}">-->
<!--                <option th:selected="${user.getRole()=='admin'}" value = "admin">admin</option>-->
<!--                <option th:selected="${user.getRole()=='user'}" value = "user">user</option>-->
<!--            </select>-->
<!--        </div>--></form><button id = "modify">ModifyUser</button>
</div>
<script >//字符串判空方法function isBlank(str){if(str == "" || str == null || str == undefined){return true;}else {return false;}}//添加用户js响应事件$("#modify").click(function(){var id = $("#id").val();var name = $("#name").val();var password = $("#pwd").val();//判断是否有未填项if(isBlank(name) || isBlank(password) ){window.confirm("请完善信息");}else {var param = {"id": id,"name": name,"password": password};$.ajax({url:"/modifyUser", //请求urldata: param,    //请求参数async: true,    //是否异步success: function f(result) {window.confirm(result.msg); //修改用户信息成功提示框location.href = "users";    //重新加载界面,同步数据库信息}});}});
</script>
</body>
</html>

 

 users.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Users</title><!-- 新 Bootstrap4 核心 CSS 文件 --><link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css"><script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script><!-- bootstrap.bundle.min.js 用于弹窗、提示、下拉菜单,包含了 popper.min.js --><script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script><!-- 最新的 Bootstrap4 核心 JavaScript 文件 --><script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div id = "selectResult"><table class="table table-dark table-hover"><thead><tr><th>用户ID</th><th>用户名称</th><th>用户密码</th><th>操作</th></tr></thead><tbody><tr th:each="user : ${userList}"><td th:text="${user.id}"></td><td th:text="${user.name}"></td><td th:text="${user.password}"></td><td><a th:href = "@{/user+{id}(id=${user.id})}">修改</a><a th:href = "@{/deleteUser+{id}(id=${user.id})}" id = "delete">删除</a></td></tr></tbody></table>
</div>
<div id = "addUser"><form name="addUser"><div class="form-group"><label for="name">name:</label><input type="text" class="form-control" name="name" id="name"></div><div class="form-group"><label for="pwd">Password:</label><input type="password" class="form-control" name="pwd" id = "pwd"></div>
<!--        <div class="form-check">-->
<!--            <label for="role">role:</label>-->
<!--            <select class="form-control" name="role" id = "role">-->
<!--                <option>admin</option>-->
<!--                <option>user</option>-->
<!--            </select>-->
<!--        </div>--></form><button id = "add">AddUser</button></div><script >//字符串判空方法function isBlank(str){if(str == "" || str == null || str == undefined){return true;}else {return false;}}//添加用户js响应事件$("#add").click(function(){var name = document.forms["addUser"]["name"].value;var password = document.forms["addUser"]["pwd"].value;//判断是否有未填项if(isBlank(name) || isBlank(password) ){window.confirm("请完善信息");}else {var param = {"name": name,"password": password};$.ajax({url:"/addUser", //请求urldata: param,    //请求参数async: true,    //是否异步success: function f(result) {window.confirm(result.msg); //新增用户成功提示框location.href = "users";    //重新加载界面,同步数据库信息}});}});
</script>
</body>
</html>

 

 application.yml

 

spring:datasource:name: springboot  #数据库名url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTCusername:   #用户名password:   #密码driver-class-name: com.mysql.cj.jdbc.Driver  #数据库链接驱动
mybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.lin.springboot0711.Bean

操作过程

 

说明

 该项目是一个简单的CURD  参考GitHub一个小的项目修改  

附上GitHub地址:https://github.com/redesperado/test1.git


http://chatgpt.dhexx.cn/article/HeudPM2h.shtml

相关文章

thinkphp curd 列表关联展现方式分享

在维护自己的开源框架中&#xff0c;针对后台列表模板&#xff0c;有时候我们需要在一键CURD的情况下&#xff0c;进行多个字段的关联显示&#xff0c;比如用户订单表里面存在user_id字段&#xff0c;那么在显示的时候&#xff0c;我们期望显示出用户的名称&#xff0c;而不是用…

mysql curd_mysql 基础之CURD

原文:mysql 基础之CURD 增删改查基本语法学习 增: insert Insert 3问: 1: 插入哪张表? 2: 插入哪几列? 3: 这几列分别插入什么值? Insert into TableName (列1,列2....列n) Values (值1,值2,....值n) 值 与 列,按顺序,一一对应 特殊: insert语句 允不允许不写列名 答:允许. …

小白入门:什么是CURD?

CRUD是CREATE、READ、UPDATE和DELETE的首字母缩写词&#xff0c;在数据库操作中频繁出现&#xff0c;本文针对小白&#xff0c;如果你已经是开发人员或者对数据库有一定认识的工程师可以默默离开了。让我直接走进CURD的世界。 为什么 CRUD 如此重要&#xff1f; CRUD 经常用于…

大龄焦虑?如何看待程序员35岁职业危机?

往期精选&#xff08;欢迎转发~~&#xff09; Java全套学习资料&#xff08;14W字&#xff09;&#xff0c;耗时半年整理 消息队列&#xff1a;从选型到原理&#xff0c;一文带你全部掌握 肝了一个月的ETCD&#xff0c;从Raft原理到实践 我肝了三个月&#xff0c;为你写出了…

Sitemesh前段框架基础

用sitemesh框架解决项目统一布局的解决方案 Sitemesh装饰框架 Sitemesh项目简介&#xff1a; Sitemesh是一个用来在jsp中实现页面布局和装饰&#xff08;layout and decoration&#xff09;的框架组件&#xff0c;能够帮助网站开发人员较容易实现页面中动态和静态装饰外观的分…

Sitemesh Demo

简介 sitemesh是一个网页布局与装饰体系,主要应用于创建具有大量一致性用户界面、导航与布局框架的站点。sitemesh拦截一切经过web server的静态或动态生成的HTML页面请求,处理页面内容,并将其与一个或多个装饰页面进行融合,生成最终页面。sitemesh也可用于构建由多个部分小…

spring集成sitemesh3

1、SiteMesh是什么&#xff1f; SiteMesh是一个网页布局和修饰的框架&#xff0c;利用它可以将网页的内容和页面结构分离&#xff0c;以达到页面结构共享的目的。 SiteMesh是基于Servlet的filter&#xff0c;通过截取response&#xff0c;并进行装饰后再交付给客户。 2、SiteMe…

sitemesh框架的简单使用(springboot+maven+jsp+sitemesh)

一 简单介绍 sitemesh是一种模板框架&#xff0c;是为了解决页面重复代码而设计的sitemesh的设计思想是装饰者设计模式 二 简单使用 目录结构&#xff0c;因为我这个项目本来是用来学习flowable的&#xff0c;后面为了方便快速学习&#xff0c;直接把sitemesh集成到这里了&a…

SiteMesh3简介及使用

最近项目用到SiteMesh3&#xff0c;研究学习一段时间后决定写篇博文来记录收获。 SiteMesh SiteMesh 介绍工作原理配置及使用 下载1添加maven依赖2webxml中添加SiteMesh过滤器3创建一个装饰页面decorator page4创建一个被装饰页面content page5配置 1XML方式1Java方式 6查看…

sitemesh初步

sitemesh小项目 1.工程目录 2.需要的lib:sitemesh-2.4.2.jar http://wiki.sitemesh.org/wiki/display/sitemesh/Download 3.配置 decorators.xml[sitemesh的配置文件] <?xml version"1.0" encoding"ISO-8859-1"?><!-- 在defaultdir目录…

SiteMesh框架统一布局用法介绍

SiteMesh 是一个网页布局和修饰的框架&#xff0c;基于 Servlet 中的 Filter&#xff0c;类似于 ASP.NET 中的‘母版页’技术。 介绍&#xff1a; 1&#xff0c;SiteMesh是OpenSymphony团队开发的JEE框架之一,它是一个非常优秀的页面装饰器框架。它通过对所有的用户请求进行过…

SIteMesh介绍

转自:http://javauu.com/thread-27-1-1.html 一、SIteMesh介绍 一、SiteMesh简介 SiteMesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观&#xff0c;如一致的导航条&#xff0c;一致的banner&a…

【CSRF】学习关于CSRF攻击和防范

文章目录 1.CSRF攻击是什么2.CSRF攻击如何实现2.1 使用GET请求的CSRF的攻击例子2.2 使用post请求的CSRF攻击 3.如何防御CSRF攻击3.1 什么是CSRF令牌3.2 反-CSRF令牌工作流程3.3 同站Cookie策略 4.结论 高质量原文&#xff1a; CSRF Attacks: Anatomy, Prevention, and XSRF To…

CSRF攻击简述

一.CSRF是什么&#xff1f; CSRF&#xff08;Cross-site request forgery&#xff09;&#xff0c;中文名称&#xff1a;跨站请求伪造&#xff0c;也被称为&#xff1a;one click attack/session riding&#xff0c;缩写为&#xff1a;CSRF/XSRF。 二.CSRF可以做什么&#xff…

如何防止CSRF攻击?

文章目录 一、什么是CSRF&#xff1f;二、CSRF的几种类型1、GET类型的CSRF2、POST类型的CSRF3、链接类型的CSRF 三、CSRF的特点四、防护策略1、同源检测如何阻止外域请求无法确认来源域名情况 2、CSRF Token原理1&#xff09;将CSRF Token输出到页面中2&#xff09;页面提交的请…

CSRF攻击原理以及防御方法

CSRF攻击原理以及防御方法 CSRF概念&#xff1a;CSRF跨站点请求伪造(Cross—Site Request Forgery)&#xff0c;跟XSS攻击一样&#xff0c;存在巨大的危害性&#xff0c;你可以这样来理解&#xff1a; 攻击者盗用了你的身份&#xff0c;以你的名义发送恶意请求&#xff0c;对服…

csrf攻击 java_Web常见攻击手段-CSRF攻击

什么是CSRF攻击&#xff1f; 跨站请求伪造(Cross-Site Request Forgery, CSRF)&#xff0c;恶意网站通过脚本向当前用户浏览器打开的其它页面的 URL 发起恶意请求&#xff0c;由于同一浏览器进程下 Cookie 可见性&#xff0c;导致用户身份被盗用&#xff0c;完成恶意网站脚本中…

什么是CSRF攻击?

什么是 CSRF 攻击&#xff1f; CSRF 概念&#xff1a;CSRF&#xff08;Cross-site request forgery&#xff09;跨站请求伪造&#xff0c;也被称为“One Click Attack”或者 Session Riding&#xff0c;通常缩写为 CSRF 或者 XSRF&#xff0c;是一种对网站的恶意利 用。 尽…

【Web 安全】CSRF 攻击详解

文章目录 一、CSRF 简介二、CSRF 原理三、CSRF 的危害四、CSRF 的攻击类型1. GET型2. POST型 五、CSRF 的防御1. 验证 HTTP Referer 字段2. 在请求地址中添加 token 并验证3. 在 HTTP 头中自定义属性并验证 六、WAF 防御 CSRF参考链接 一、CSRF 简介 CSRF&#xff08;Cross Si…

如何强制卸载软件,强制卸载的工具。

日常使用电脑过程中经常会遇到一些流氓捆绑软件&#xff0c;今天我们教大家如何轻松的强制卸载流氓软件。非常小巧而且强大的一款强制卸载工具&#xff0c;干净清爽。 工具/原料 Geek Uninstaller 方法/步骤 首先我们下载工具&#xff0c;百度输入geek点击搜索&#xff0c;如下…