Spring+thymeleaf完成用户管理页面的增删查改功能

目录

知识点: 路由重定向 redirect:/***

登录

控制层代码

接口

sql配置

页面效果

添加用户

控制层代码

接口

sql配置

页面效果

查看信息

控制层代码

接口

sql配置

页面效果

修改信息

控制层代码

接口

sql配置

页面效果

条件查询

控制层代码

接口

sql配置

页面效果

删除数据

控制层代码

接口

sql配置

页面效果


知识点: 路由重定向 redirect:/***

使得一个路由地址A与另一个路由地址B联系起来,执行A的时候会跳转执行B 。不仅 “/” 可以被重定向,其他普通路由地址互相也可以重定向。重定向会使得路由再次发生调用请求。

登录

输入用户名和密码,根据用户名和密码查询,如果查到,则登录成功。

控制层代码

/*** 登录 判断用户名和密码是否正确*/@RequestMapping("/index")public ModelAndView goindex(User user) {System.out.println(user);System.out.println(user.getUsername() + "  " + user.getPassword());User login = userService.getUser(user);if (login != null) {mav.addObject("name", user.getUsername());mav.setViewName("index");} else {mav.addObject("error", "用户名和密码错误");mav.setViewName("login");}return mav;}

接口

   

//登录public User getUser(User user);

sql配置

 <!--登录 根据用户名和密码查询--><select id="getUser" resultType="User">select *from userwhere username = #{username}and password = #{password}</select>

页面效果

登录页面

用户名密码错误时

用户名密码正确时

添加用户

点击添加用户,进入添加用户页面,表单输入完成后提交,添加表单内容到数据库

控制层代码

   

/*** 新建用户* @param user* @return*/@RequestMapping("/userAdd")public Object goUserAdd(User user) {System.out.println("5555555555555555555555555"+user);if(user.getUsername()!=null){userService.insert(user);return "redirect:/userList";}else {mav.setViewName("userAdd");return mav;}}

接口

   /*** 新增数据** @param user 实例对象* @return 影响行数*/public Integer insert(User user);

sql配置

 <!--新增--><insert id="insert">insert into user values (0,#{username}, #{password}, #{gender}, #{age}, #{phone}, #{type})</insert>

页面效果

查看信息

点击查看,根据id查询到信息,显示在页面上

控制层代码

 /*** 查看数据** @return*/@RequestMapping("/userView/{id}")public ModelAndView goUserView(@PathVariable("id") Integer id) {User user = userService.queryById(id);System.out.println(user);mav.addObject("item", user);mav.setViewName("userView");return mav;}

接口

 /*** 通过ID查询单条数据** @param userid 主键* @return 实例对象*/public User queryById(Integer userid);

sql配置

   

  <select id="queryById" resultType="User">select *from userwhere userid = #{userid}</select>

页面效果

修改信息

将原本信息显示在页面上,在输入框输入修改后信息,提交表单,更新数据库数据。

控制层代码

/*** 修改数据* 点击修改时:首先取缓存中数据和该行数据对比,一致则能修改,不一致则不允许修改。* @return*/@RequestMapping("/userUpdate/{id}")public Object goUserUpdate(@PathVariable("id") Integer id, User user) {
//        先查看  修改前User user1 = userService.queryById(id);mav.addObject("former", user1);mav.setViewName("userUpdate");
//       再获取表单数据System.out.println("goUserUpdate" + user);if (user.getUsername() != null) {user.setUserid(user1.getUserid());userService.update(user);return "redirect:/userList";}return mav;}

接口

/*** 修改数据** @param user* @return*/public Integer update(User user);

sql配置

<!--通过主键修改数据--><update id="update">update user<set><if test="username != null and username != ''">username = #{username},</if><if test="password != null and password != ''">password = #{password},</if><if test="gender != null and gender != ''">gender = #{gender},</if><if test="age != null">age = #{age},</if><if test="phone != null and phone != ''">phone = #{phone},</if><if test="type != null and type != ''">type = #{type},</if></set>where userid = #{userid}</update>

页面效果

条件查询

根据输入条件,点击查询后页面显示数据。如果未输入,则显示所有,进入页面则显示所有

控制层代码

/*** 页面显示列表** @return*/@RequestMapping("/userList")public ModelAndView goUserList(User user) {System.out.println(user);List<User> users = userService.UserList(user.getUsername());
//        存缓存redisTemplate.opsForValue().set("users", users);List<User> userList = (List<User>) redisTemplate.opsForValue().get("users");
//        存页面mav.addObject("users", userList);mav.setViewName("userList");return mav;}

接口

 //显示列表public List<User> UserList(String username);

sql配置

  <!--显示列表--><select id="UserList" resultType="User">select *from user<where><if test="username!=null and username!=''">username like '%${username}%'</if></where></select>

页面效果

输入条件

点击查询后

再次点击

删除数据

点击删除按钮,删除此条数据。

控制层代码

 /*** 删除数据** @param userid 主键* @return 删除是否成功*/@RequestMapping("/userdelet/{id}")public String userdelet(@PathVariable("id") Integer userid) {userService.deleteById(userid);return "redirect:/userList";}

接口

 /*** 通过主键删除数据** @param userid 主键* @return 影响行数*/public Integer deleteById(Integer userid);

sql配置

<!--通过主键删除--><delete id="deleteById">deletefrom userwhere userid = #{userid}</delete>

页面效果

删除小绿后:

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gcc任意版本安装流程(linux)

一.更换镜像源 仅仅针对有需要换镜像需求的用户 sudo gedit /etc/apt/sources.list 用于在基于Debian的Linux发行版&#xff08;如Ubuntu&#xff09;上用来编辑软件源列表的命令。 我们更换阿里源&#xff1a; deb http://mirrors.aliyun.com/ubuntu/ focal main restricted…

【CKA模拟题】不可不知:NodePort操作全攻略!

题干 For this question, please set this context (In exam, diff cluster name) kubectl config use-context kubernetes-adminkubernetesCreate a NodePort service named app-service-cka (with below specification) to expose the nginx-app-cka deployment in the ngi…

线性数据结构----(数组,链表,栈,队列,哈希表)

线性数据结构 数组链表栈使用场景 队列应用场景 哈希表特点哈希函数&#xff0c;哈希值&#xff0c;哈希冲突键值对 Entry 开放寻址法和拉链法 参考文档 数组 数组(Array) 是一种很常见的数据结构。由相同类型的元素组成&#xff0c;并且是使用一块连续的内存来存储的。 在数组…

USB转TTL电路

一、典型接法1&#xff08;CH430C&#xff09; 这是USB接口电路 这是CH430C的典型电路 二、典型接法2(CH430G) 接口电路 这是CH430G的典型电路 三、典型接法3(CH430E) 接口电路 这是CH430E的典型电路

Spring框架介绍及详细使用

前言 本篇文章将会对spring框架做出一个比较详细的讲解&#xff0c;并且每个知识点基本都会有例子演示&#xff0c;详细记录下了我在学习Spring时所了解到全部知识点。 在了解是什么spring之前&#xff0c;我们要先知道spring框架在开发时&#xff0c;服务器端采用三层架构的方…

AI时代-普通人的AI绘画工具对比(Midjouney与Stable Diffusion)

AI时代-普通人的AI绘画工具对比&#xff08;Midjouney与Stable Diffusion&#xff09; 前言1、基础对比Stable Diffusion&#xff08;SD&#xff09;SD界面安装与使用SD Midjouney&#xff08;MJ&#xff09; 2、硬件与运行要求对比Stable Diffusion硬件要求内存硬盘显卡 Midjo…

FPGA之组合逻辑与时序逻辑

数字逻辑电路根据逻辑功能的不同&#xff0c;可以分成两大类&#xff1a;组合逻辑电路和时序逻辑电路&#xff0c;这两种电路结构是FPGA编程常用到的&#xff0c;掌握这两种电路结构是学习FPGA的基本要求。 1.组合逻辑电路 组合逻辑电路概念&#xff1a;任意时刻的输出仅仅取决…

macOS Sonoma 14.4.1 (23E224) 正式版发布,ISO、IPSW、PKG 下载

macOS Sonoma 14.4.1 (23E224) 正式版发布&#xff0c;ISO、IPSW、PKG 下载 2024 年 3 月 26 日凌晨&#xff0c;macOS Sonoma 14.4.1 更新修复了一个可能导致连接到外部显示器的 USB 集线器无法被识别的问题。它还解决了可能导致 Java 应用程序意外退出的问题&#xff0c;并修…

MT6762_联发科MTK6762安卓核心板规格参数

MTK6762核心板是一款集成了蓝牙、fm、wlan和gps模块的高度集成基带平台&#xff0c;为LTE/LTE-A和C2K智能手机应用程序提供支持。该安卓核心板集成了ARM Cortex-A53处理器&#xff0c;工作频率可达2.0GHz&#xff0c;并且还集成了功能强大的多标准视频编解码器。除此之外&#…

LeetCode 面试经典150题 205.同构字符串

题目&#xff1a; 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符&#xff0c;同时不改变字符的顺序。不同字符不能映射到同一个字…

【Monero】Onion Monero Blockchain Explorer | 洋葱门罗币区块链浏览器

github&#xff1a;onion-monero-blockchain-explorer Onion Monero Blockchain Explorer特点: • 没有cookie&#xff0c;没有网络分析跟踪器&#xff0c;没有image&#xff0c; • 开源&#xff0c; • 完全用C编写&#xff0c; • 显示加密的付款 ID&#xff0c; • 显示环…

怎么看电脑有没有蓝牙功能?学会这4个方法就够啦!

蓝牙技术&#xff0c;作为一种无线通信技术标准&#xff0c;已经广泛应用于各类电子设备中。对于电脑而言&#xff0c;蓝牙功能不仅能够实现设备间的无线连接和数据传输&#xff0c;还能提升用户的操作体验。 然而&#xff0c;并非所有电脑都内置了蓝牙功能&#xff0c;因此&a…