留言板(Mybatis连接数据库版)

news/2025/2/12 8:15:21/

目录

1.添加Mybatis和SQL的依赖

2.建立数据库和需要的表

3.对应表中的字段,补充Java对象

4.对代码进行逻辑分层

5.后端逻辑代码


之前的项目实例【基于Spring MVC的前后端交互案例及应用分层的实现】https://blog.csdn.net/weixin_67793092/article/details/134613210?utm_source=app&app_version=6.1.7中有关对于留言板的介绍,现在使用Mybatis完成连接数据库,这样以便刷新浏览器页面后,之前输入的信息仍然能够保存在硬盘中。

之前的前端页面实现:

1.添加Mybatis和SQL的依赖

在pom.xml文件中右键

2.建立数据库和需要的表

 DROP TABLE IF EXISTS message_info;CREATE TABLE `message_info` (`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,`from` VARCHAR ( 127 ) NOT NULL,`to` VARCHAR ( 127 ) NOT NULL,`message` VARCHAR ( 256 ) NOT NULL,`delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-删除',`create_time` DATETIME DEFAULT now(),`update_time` DATETIME DEFAULT now() ON UPDATE now(),
PRIMARY KEY ( `id` ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;

配置连接数据库application.properties文件

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=falsespring.datasource.username=rootspring.datasource.password=root

3.对应表中的字段,补充Java对象

4.对代码进行逻辑分层

controller接收请求,service服务层实现业务逻辑,mapper查询数据库的操作,model存放对象。

配置日志:

方便遇见问题时调试代码

mybatis:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

5.后端逻辑代码

MessageController

@Slf4j
@RequestMapping("/message")
@RestController//发布留言
public class MessageController {//    private List<MessageInfo> messageInfos=new ArrayList<>();@Autowiredprivate MessageService messageService;@RequestMapping("/publish")public Boolean publishMessage(MessageInfo messageInfo) {log.info("发表留言");//进行参数的校验if (!StringUtils.hasLength(messageInfo.getFrom())|| !StringUtils.hasLength(messageInfo.getTo())|| !StringUtils.hasLength(messageInfo.getMessage())) {return false;}//添加留言messageService.addMessage(messageInfo);return true;}
//       查看留言@RequestMapping("/getMassageInfo")public List<MessageInfo> getMessageInfo(){return messageService.getMessageInfo();}
}

MessageService

@Service
public class MessageService {@Autowiredprivate MessageMapper messageMapper;public void addMessage(MessageInfo messageInfo) {messageMapper.insertMessage(messageInfo);}public List<MessageInfo> getMessageInfo() {return messageMapper.selectAllMessage();}
}

MessageMapper

@Mapper
public interface MessageMapper {@Insert("insert into message_info(from,to,message) values (#{from},#{to},#{message}")void insertMessage(MessageInfo messageInfo);@Select("select * from message_info where delete_flag=0")List<MessageInfo> selectAllMessage();
}

代码逻辑:


http://www.ppmy.cn/news/1288102.html

相关文章

SQL高级:窗口函数

窗口函数,顾名思义,它的操作对象是窗口,即一个小的数据范围,而不是整个结果集。并且它是一个函数,在SQL中使用,所以一定有返回值。 窗口函数是SQL中非常有趣的部分,这一节我们就来学习一下它。 辅助表 方便我们后边的讲解,这里我们要建一张学生成绩表,建表语句如下…

全自动建站神器,一键搭建网站,个人博客,个人官网,Jn建站系统2.0

详细教程 全自动建站神器&#xff0c;一键搭建网站。个人博客,个人官网,宝塔面板建站系统&#xff0c;Jn建站系统2.0源码 附视频安装教程 设备需要&#xff1a;服务器域名 目前已集成的网站&#xff1a; 1.发卡网(最新) 2.代刷网(无需授权) 3. 博客网(自带模板) 4.易支付…

2023下半年的总结

我从八月下旬开始写的&#xff0c;到现在差不多有半年了&#xff0c;总结一下吧&#xff01; 1.计算机视觉 在计算机视觉方面&#xff0c;想必两个有名的深度学习框架&#xff08;TensorFlow和PyTorch&#xff09;大家都很清楚吧&#xff0c;以及OpenCV库。对于人脸识别&…

linux用户态与内核态通过字符设备交互

linux用户态与内核态通过字符设备交互 简述 Linux设备分为三类&#xff0c;字符设备、块设备、网络接口设备。字符设备只能一个字节一个字节读取&#xff0c;常见外设基本都是字符设备。块设备一般用于存储设备&#xff0c;一块一块的读取。网络设备&#xff0c;Linux将对网络…

【Maven】工程依赖下载失败错误解决

在使用 Maven 构建项目时&#xff0c;可能会发生依赖项下载错误的情况&#xff0c;主要原因有以下几种&#xff1a; 下载依赖时出现网络故障或仓库服务器宕机等原因&#xff0c;导致无法连接至 Maven 仓库&#xff0c;从而无法下载依赖。 依赖项的版本号或配置文件中的版本号错…

【C语言数据结构】折半查找排序(有注释)

实现折半插入排序。 函数接口定义&#xff1a; void BInsertSort(SqList &L);裁判测试程序样例&#xff1a; #include <iostream> #define MAXSIZE 1000 using namespace std;typedef struct {int key;char *otherinfo; }ElemType;typedef struct { ElemType *r;i…

目标检测实例分割数据集转换:从XML和JSON到YOLOv8(txt)

yolov8导航 如果大家想要了解关于yolov8的其他任务和相关内容可以点击这个链接&#xff0c;我这边整理了许多其他任务的说明博文&#xff0c;后续也会持续更新&#xff0c;包括yolov8模型优化、sam等等的相关内容。 YOLOv8&#xff08;附带各种任务详细说明链接&#xff09; 源…

【面试题】HTTP 协议中 URI 和 URL 的区别

URI: Uniform Resource Identifier, 统一资源标识符。用来唯一标识资源&#xff0c;是一种语义上的抽象概念。 URL: Uniform Resource Locator, 统一资源定位符。用来定位唯一的资源&#xff0c; 必须提供足够的定位信息。 1. URI和URL的区别&#xff1a; 统一资源标识符URI…