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 user
        where 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 user
        where 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">
        delete
        from user
        where userid = #{userid}
    </delete>

页面效果

删除小绿后:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python学习14:python中的表达式

python中的表达式 1.表达式是什么呢&#xff1f; 表达式就是一个具有明确结果的代码语句&#xff0c;如11、type(‘字符串’)、3*5等 在定义变量的时候&#xff0c;如age108,等号右侧的就是表达式&#xff0c;也就是有具体的结果&#xff0c;将结果赋值给了等号左侧的变量 2.…

全国美食博主都在天水:一碗麻辣烫,如何在互联网热辣滚烫?

从淄博到哈尔滨&#xff0c;地方文旅此前从未想到过&#xff0c;自己与“一夜爆火”的距离居然这么近&#xff1b; 而等到从哈尔滨再到天水时&#xff0c;地方文旅的应对甚至已经开始轻车熟路了起来。 热闹之下&#xff0c;难免有几个问题需要细思&#xff1a;为什么从2023年到…

Mysql的连接与存储

目录 一、mysql的连接查询 1、连接的分类&#xff1a; 1.1 内连接 1.2左连接 1.3 右连接 二、存储过程 1、简介 2、优点 3、语法 4、参数分类 5、带参数的存储过程 6、修改存储过程 7、删除存储过程 三、总结 一、mysql的连接查询 mysql的连接查询&#xff0c;通…

Linux:环境变量的特性及获取

目录 一、环境变量基本概念 1.1命令行参数 1.2常见环境变量 二、环境变量相关指令 创建本地变量 三、环境变量通常是具有全局属性的 一、环境变量基本概念 环境变量(environment variables)不是一个而是一堆&#xff0c;彼此之间其实没有关系。本质上是为了解决不同场景下…

【Java程序设计】【C00402】基于(JavaWeb)Springboot的新冠物资管理(含论文)

基于&#xff08;JavaWeb&#xff09;Springboot的新冠物资管理&#xff08;含论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千…

由浅到深认识Java语言(33):多线程

该文章Github地址&#xff1a;https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址&#xff1a;https://blog.c…

记一次 .NET某防伪验证系统 崩溃分析

一&#xff1a;背景 1. 讲故事 昨晚给训练营里面的一位朋友分析了一个程序崩溃的故障&#xff0c;因为看小伙子昨天在群里问了一天也没搞定&#xff0c;干脆自己亲自上阵吧&#xff0c;抓取的dump也是我极力推荐的用 procdump 注册 AEDebug 的方式&#xff0c;省去了很多沟通…

【Python BUG】CondaHTTPError解决记录

问题描述 CondaHTTPError: HTTP 429 TOO MANY REQUESTS for url https://mirrors.ustc.edu.cn/anaconda/pkgs/free/win-64/current_repodata.json Elapsed: 00:26.513315 解决方案 找到用户路径下的 .condarc文件&#xff0c;建议用这个方法前和我一样做个备份&#xff0c;方…

蛋糕店怎么弄一个微信小程序_开启蛋糕店新篇章

微信小程序&#xff0c;开启蛋糕店新篇章——甜蜜触手可及 在这个数字化、智能化的时代&#xff0c;微信小程序以其便捷、高效的特点&#xff0c;成为了众多商家与消费者之间的桥梁。对于蛋糕店而言&#xff0c;拥有一个专属的微信小程序&#xff0c;不仅可以提升品牌形象&…

家用超声波清洗机高端品牌推荐!4款值得入手的热门超声波清洗机

急着洗眼镜的朋友先不要慌&#xff0c;虽然洗眼镜是日常生活中最常见的操作&#xff0c;但是在清洗眼镜方面也是有讲究的&#xff0c;不是随随便便把眼镜擦一下就算清洁干净了&#xff01;因为我们拿眼镜布擦眼镜的时候&#xff0c;布料粗糙的微粒就会跟砂纸一样打磨着镜片&…

YOLOv5-小知识记录(一)

0. 写在前面 这篇博文主要是为了记录一下yolov5中的小的记忆点&#xff0c;方便自己查看和理解。 1. 完整过程 &#xff08;1&#xff09;Input阶段&#xff0c;图片需要经过数据增强Mosaic&#xff0c;并且初始化一组anchor预设&#xff1b; &#xff08;2&#xff09;特征提…

快递鸟物流轨迹地图API接口,包裹行程尽在掌握!

在快节奏的现代生活中&#xff0c;物流行业作为连接生产者与消费者的桥梁&#xff0c;其重要性不言而喻。随着电子商务的飞速发展&#xff0c;人们对物流信息的实时性和准确性要求越来越高。为了满足这一需求&#xff0c;快递鸟物流轨迹地图API应运而生&#xff0c;为广大用户提…

jsp将一个文本输入框改成下拉单选框,选项为字典表配置,通过后端查询

一&#xff0c;业务场景&#xff1a; 一个人员信息管理页面&#xff0c;原来有个最高学历是文本输入框&#xff0c;可以随意填写&#xff0c;现在业务想改成下拉单选框进行规范化&#xff0c;在专科及以下、本科、研究生三个选项中选择&#xff1b; 二&#xff0c;需要解决问…

职场中人如何做好时间管理提高工作效率?高效时间管理软件

在职场中&#xff0c;时间就是金钱&#xff0c;效率就是生命。面对繁杂的工作任务和紧迫的时间限制&#xff0c;做好时间管理显得尤为重要。只有合理规划时间&#xff0c;才能提高工作效率&#xff0c;从而在激烈的职场竞争中脱颖而出。 那么&#xff0c;职场中人如何做好时间…

mysql80-DBA数据库学习1-数据库安装

掌握能力 核心技能 核心技能 mysql部署 官网地址www.mysql.com 或者www.oracle.com https://dev.mysql.com/downloads/repo/yum/ Install the RPM you downloaded for your system, for example: yum install mysql80-community-release-{platform}-{version-number}.noarch…

大唐电信AC管理平台弱口令登录及信息泄露

大唐电信AC简介 大唐电信科技股份有限公司是电信科学技术研究院&#xff08;大唐电信科技产业集团&#xff09;控股的的高科技企业&#xff0c;大唐电信已形成集成电路设计、软件与应用、终端设计、移动互联网四大产业板块。 大唐电信AC集中管理平台存在弱口令及敏感信息泄漏漏…

如何在Windows通过eXtplorer结合cpolar搭建个人文件服务器并实现无公网ip远程访问

文章目录 1. 前言2. eXtplorer网站搭建2.1 eXtplorer下载和安装2.2 eXtplorer网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1. 前言 通过互联网传输文件&#xff0c;是互联网最重要的应用之一&#xff0c;无论是…

推特Twitter有直播功能吗?如何用Twitter直播?

现在各大直播平台已经成为社交媒体营销的一种重要渠道&#xff0c;它让品牌能够即时地与全球受众进行互动。据统计&#xff0c;直播市场正在迅速增长&#xff0c;预计到2028年将达到2230亿美元的规模。在这个不断扩张的市场中&#xff0c;许多社交媒体平台如YouTube、Facebook、…

【OS探秘】【虚拟化】【软件开发】【网络安全】在Windows11上安装Kali Linux虚拟机

一、所需原料 Windows 11主机、Oracle VM VirtualBox虚拟化平台、Kali Linux镜像文件 二、安装步骤 1、 在VBox管理器中&#xff0c;点击“新建”&#xff0c;进入向导模式&#xff0c;指定各个字段的值&#xff1a; 2、 安装完成&#xff0c;启动虚拟机&#xff1a; 3、 选择…

[linux初阶][vim-gcc-gdb] OneCharter: vim编辑器

一.vim编辑器基础 目录 一.vim编辑器基础 ①.vim的语法 ②vim的三种模式 ③三种模式的基本切换 ④各个模式下的一些操作 二.配置vim环境 ①手动配置(不推荐) ②自动配置(推荐) vim是vi的升级版,包含了更加丰富的功能. ①.vim的语法 vim [文件名] ②vim的三种模式 命令…