thymeleaf+mybatis(本文章用于期末考前10分钟速看)

news2024/11/26 9:36:32

期末速看

  • pom(了解)
  • application.properties
  • sql
  • 代码
    • Controller控制层
    • 视图
    • service: 服务层
    • mapper(dao):持久层
    • entity层(model层,domain层、 bean):对应数据库表,实体类
  • 效果

使用Spring Boot整合Mybatis,在浏览器中实现对评论数据的增删改查操作。thymeleaf+mybatis

链接:https://pan.baidu.com/s/12BQcCwJ_2fvTzf5YxexLgg?pwd=1024
提取码:1024
网盘里有我录的视频

pom(了解)

<version>2.7.0</version>

<java.version>1.8</java.version>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.3.0</version>
</dependency>

在这里插入图片描述
在这里插入图片描述

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/mydb2?useSSL=false
spring.datasource.username=root
spring.datasource.password=123456

sql

use mydb2;
DROP TABLE IF EXISTS `t_comment`;
CREATE TABLE `t_comment` (
                             `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '评论id',
                             `article_id` int(11)  COMMENT '关联的文章id',
                             `created` date  COMMENT '评论时间',
                             `ip` varchar(200) DEFAULT NULL COMMENT '评论用户登录的ip地址',
                             `content` text NOT NULL COMMENT '评论内容',
                             `status` varchar(200)  DEFAULT 'approved' COMMENT '评论状态',
                             `author` varchar(200) NOT NULL COMMENT '评论用户用户名',
                             PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `t_comment` VALUES ('1', '12', '2018-12-13', '0:0:0:0:0:0:0:1', '很不错,不过这文章排版不太好看啊', 'approved', '李四');
INSERT INTO `t_comment` VALUES ('2', '11', '2018-12-13', '0:0:0:0:0:0:0:1', '很不错的原理分析,受用了!', 'approved', '李四');
INSERT INTO `t_comment` VALUES ('3', '10', '2018-12-13', '0:0:0:0:0:0:0:1', '关于Docker虚拟容器的讲解挺好的额,学习中', 'approved', '李四');
INSERT INTO `t_comment` VALUES ('9', '1', '2018-12-13', '0:0:0:0:0:0:0:1', '非常不错,赞一个!', 'approved', '李四');
INSERT INTO `t_comment` VALUES ('10', '1', '2018-12-13', '0:0:0:0:0:0:0:1', '博主,这资料怎么弄的?有相关资源和教材推荐吗?', 'approved', '李四');
INSERT INTO `t_comment` VALUES ('11', '1', '2018-12-13', '0:0:0:0:0:0:0:1', '很详细,感谢...', 'approved', '东方不败');
INSERT INTO `t_comment` VALUES ('12', '1', '2018-12-13', '0:0:0:0:0:0:0:1', '很全,努力学习中...', 'approved', '东方不败');
INSERT INTO `t_comment` VALUES ('13', '1', '2018-12-13', '0:0:0:0:0:0:0:1', '好东西,先收藏起来,哈哈', 'approved', 'tom');
INSERT INTO `t_comment` VALUES ('14', '8', '2018-12-13', '0:0:0:0:0:0:0:1', 'very good blog', 'approved', 'tom');

代码

Controller控制层

@Controller
public class CommentController {
    @Autowired
    private  CommentService commentService;

    @GetMapping("/index")
    public String index(Model model){
        List<Comment> comments = commentService.findAll();
        System.out.println(comments);
        model.addAttribute("comments",comments);

        return "index";
    }

    @GetMapping("/delete/{id}")
    public String delete(@PathVariable("id") int id, Model model){
        System.out.println("delete: "+id);
        commentService.deleteById(id);
//        return index(model);
        return "redirect:/index";
    }

    @PostMapping("/save")
    public String save(@RequestParam("content") String content,@RequestParam("author")  String author, Model model){
        Comment comment = new Comment(content, author);
        commentService.save(comment);
        return "redirect:/index";//        return this.index(model);
    }

    @GetMapping("update")
    public String updateHtml(@RequestParam("id") int id,Model model){
        Comment comment = commentService.findById(id);
        model.addAttribute("comment",comment);
        return "update";
    }

    @PostMapping("update")
    public String update(@RequestParam("id") int id,@RequestParam("content") String content,@RequestParam("author") String author,Model model){
        commentService.update(new Comment(id,content,author));
        return "redirect:/index";//        return this.index(model);
    }

}

视图

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<form  action="save" method="post">
   评论内容 :<input name="content" type="text">
   作者: <input name="author" type="text">
    <input type="submit" value="添加评论">
</form>
<table border="1">
    <tr>
        <td>内容</td>
        <td>作者</td>
        <td>编辑</td>
        <td>添加评论</td>
    </tr>
    <tr th:each="c:${comments}">
        <td th:text="${c.content}"></td>
        <td th:text="${c.author}"></td>
        <td ><a th:href="@{'/update?id=' + ${c.id}}">编辑</a></td>
        <td ><a th:href="@{'/delete/' + ${c.id}}">删除</a></td>
    </tr>
</table>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>编辑评论</title>
</head>
<body>
<form  action="/update" method="post">
    <input name="id" type="hidden" th:value="${comment.id}">
    评论内容 :<input name="content" type="text" th:value="${comment.content}">
    作者: <input name="author" type="text" th:value="${comment.author}">
    <input type="submit" value="修改评论">
</form>
</body>
</html>

service: 服务层

@Service
public class CommentService {
    @Autowired
   private CommentMapper commentMapper;
    public List<Comment> findAll(){
        return  commentMapper.findAll();
    }


    public Comment findById(int id){
        return commentMapper.findById(id);
    }


    public int deleteById(int id){
        return commentMapper.deleteById(id);
    }


    public  int save(Comment comment){
        return commentMapper.save(comment);
    }


    public  int update(Comment comment){
        return commentMapper.update(comment);
    }

}

mapper(dao):持久层

@Mapper
public interface CommentMapper {
    @Select("select * from t_comment")
    public List<Comment> findAll();

    @Select("select * from t_comment where id=#{id}")
    public Comment findById(int id);

    @Delete("delete from t_comment where id=#{id}")
    public int deleteById(int id);

    @Insert("INSERT INTO t_comment(content , author) VALUES (#{content},  #{author})")
    public  int save(Comment comment);

    @Update("update t_comment set  content= #{content},author=#{author} where id=#{id}")
    public  int update(Comment comment);
}

entity层(model层,domain层、 bean):对应数据库表,实体类

public class Comment {
    private int id;
    private int article_id;//关联的文章id
    private  String created;//评论时间
    private  String ip;//用户登录的ip地址
    private  String content;//评论内容
    private  String status;//评论状态
    private  String author;//评论 的用户名
	//构造方法、get、set
}

效果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】指针剖析(2)

©作者:末央&#xff06; ©系列:C语言初阶(适合小白入门) ©说明:以凡人之笔墨&#xff0c;书写未来之大梦 目录 一、数组名1.概念2.sizeof和&里面的数组名sizeof& 二、使用指针访问数组三、一维数组传参本质四、指针数组1.概念实例&#xff08;模拟二维数…

【GitOps】使用Google工具JIB实现本地无需安装容器推送镜像,加速SpringCloud项目开发

文章目录 一、效果展示二、简介三、安装Jib插件1、区分环境2、安装插件一、效果展示 本地是window系统,无docker环境,没有任何runtime,使用jib工具打包镜像并推送完成,用时20秒 二、简介 Jib 是 Google 开发的一款开源工具,旨在帮助 Java 开发者更高效地将 Java 应用程…

25届近5年北京交通大学自动化考研院校分析

北京交通大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、初试大纲复试大纲 七、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试科目介绍 2、指定教…

vue使用scrollreveal和animejs实现页面滑动到指定位置后再开始执行动画效果

效果图 效果链接&#xff1a;http://website.livequeen.top 介绍 一、Scrollreveal ScrollReveal 是一个 JavaScript 库&#xff0c;用于在元素进入/离开视口时轻松实现动画效果。 ScrollReveal 官网链接&#xff1a;ScrollReveal 二、animejs animejs是一个好用的动画库…

LabVIEW电压电流实时监测系统

开发了一种基于LabVIEW和研华&#xff08;Advantech&#xff09;数据采集卡的电压电流实时监测系统&#xff0c;通过高效的数据采集和处理&#xff0c;为工业和科研用户提供高精度、实时的电压电流监测解决方案。系统采用研华USB-4711A数据采集卡&#xff0c;结合LabVIEW编程环…

【自然资源】国家历史文化名城你知道多少?

【自然资源】国家历史文化名城你知道多少&#xff1f; 中国五千年的历史孕育出了一些因深厚的文化底蕴和发生过重大历史事件而青史留名的城市。根据《中华人民共和国文物保护法》&#xff0c;“历史文化名城”是指保存文物特别丰富&#xff0c;具有重大历史文化价值和革命意义…

数据恢复篇: 如何在数据丢失后恢复照片

数据丢失的情况并不少见。如果您曾经遇到过图像丢失的情况&#xff0c;您可能想过照片恢复工具是如何工作的&#xff1f;可能会丢失多少数据图像&#xff1f;即使是断电也可能导致照片和媒体文件丢失。 话虽如此&#xff0c;如果你认为删除的照片无法恢复&#xff0c;那你就错…

sheng的学习笔记-hadoop,MapReduce,yarn,hdfs框架原理

目录 搭建hadoop 下载hadoop JAVA 下载bin windows 改环境变量 将winutils.exe和hadoop.dll放到C:\Windows\System32下&#xff0c;然后重启 修改配置 vim core-site.xml vim hdfs-site.xml hadoop-env.sh mapred-site.xml yarn-site.xml 格式化命令 启动集群 …

大数据可视化实验(七):Python数据可视化

目录 一、实验目的... 1 二、实验环境... 1 三、实验内容... 1 1&#xff09;绘制带颜色的柱状图。.. 1 2&#xff09;绘制堆叠柱状图。.. 3 3&#xff09;绘制数学函数曲线图。.. 4 4&#xff09;使用seaborn绘制组合图形。... 5 5&#xff09;使用Boken绘制多个三角形…

区块链技术与数字货币

1.起源 ➢中本聪(Satoshi Nakamoto), 2008 ➢比特币:一种点对点的电子现金系统 2.分布式账本技术原理 1.两个核心技术&#xff1a; ➢以链式区块组织账本数据实现账本数据的不可篡改 ➢分布式的可信记账机制 2.共识机制&#xff1a;由谁记账 ➢目的&#xff1a; ⚫ 解…

数据可视化期末总结

期末考试重点&#xff08;世界上最没意义的事情&#xff09; 选择 p8 数据可视化的标准&#xff1a; 实用、完整、真实、艺术、交互&#xff08;性&#xff09; p21 色彩三属性 色相、饱和度、亮度 p23 视觉通道的类型&#xff1a; 记得色调是定性 p39 散点图&#xff08;二维…

检查显卡驱动和cuda版本的对应关系并下载

1. CUDA 12.5 Release Notes — Release Notes 12.5 documentation Official Drivers | NVIDIA&#xff08;驱动下载&#xff09;搜索结果 | GeForce RTX 3090 | Linux 64-bit | NVIDIA nvidia-smi &#xff08;查看cuda&#xff09; pipx run nvitop nvcc -V https://deve…

飞书API 2-3:如何使用 API 创建数据表,解放人工?

一、引入 作为飞书多维表的深度使用者&#xff0c;经常需要将一些数据库的数据同步到多维表上&#xff0c;在数据写入之前&#xff0c;一般需要新建数据表和字段。当通过网页端界面新建字段时&#xff0c;如果字段少&#xff0c;还能接受手动一个个创建&#xff0c;不过一旦字…

win11 内存占用过大优化尝试

关闭开机加速 wins打开搜索 控制面板&#xff0c;打开控制面板 找到硬件和声音-电源选项-选择电源按钮的功能-去掉勾选启用快速启动 关闭windows 更新 winr 输入services.msc打开服务-搜索windows 更新-双击打开设置-选择禁用 貌似没什么用。

【C++ | 委托构造函数】委托构造函数 详解 及 例子源码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

TypeScript学习笔记(全)

文章目录 TypeScript入门2.编译并运行TS代码2.1.简化运行ts步骤 3.TS中的常用类型3.1.TS中的类型注解3.2.TS中的原始类型3.3.TS中的数组类型3.4.TS中的联合类型3.5.类型别名3.6.函数类型3.6.1.单独执行参数、返回值类型3.6.2.同时指定参数&#xff0c;返回值类型3.6.3.函数的vo…

【C++开发必备工具】Dependency Walker与Dependencies

Dependency Walker 与 Dependencies 1. Dependency Walker1.1 功能特点1.2 使用方法1.3 注意事项 2. Dependencies2.1 功能特点2.2 使用方法2.3 注意事项 3. 总结 1. Dependency Walker Dependency Walker 是一个免费软件工具&#xff0c;用于查看 Windows 应用程序的模块&…

el-tree结构清空选中节点

<el-tree:data"data"show-checkboxdefault-expand-allnode-key"id"ref"tree"highlight-current:props"defaultProps"> </el-tree>this.$refs.tree.setCheckedKeys(this.$refs.tree.getCheckedNodes(),false);

【单片机毕业设计选题24037】-基于STM32的电力系统电力参数无线监控系统

系统功能: 系统上电后&#xff0c;OLED显示“欢迎使用电力监控系统请稍后”&#xff0c;两秒后显示“Waiting..”等待ESP8266初始化完成&#xff0c; ESP8266初始化成功后进入正常页面显示&#xff0c; 第一行显示电压值&#xff08;单位V&#xff09; 第二行显示电流值&am…

编码大模型系列:Meta创新的“代码编译优化”的LLM

鲁班号导读正式上线。移步“鲁班秘笈”&#xff0c;查阅更多内容。 大型语言模型 (LLM) 已在各种软件工程和编码任务中展现出卓越的能力。然而&#xff0c;它们在代码和编译器优化领域的应用仍未得到充分探索。训练LLM需要大量资源&#xff0c;需要大量的 GPU时间和大量的数据…