
 💓 博客主页:从零开始的-CodeNinja之路
⏩ 收录文章:浪漫编码:手把手教你实现校园表白墙功能
🎉欢迎大家点赞👍评论📝收藏⭐文章
 
 
这里写目录标题
- 表白墙
- 数据准备
- 引入MyBatis和MySQL驱动依赖
- 配置MySQL账号密码
- 编写后端代码
 
- 测试代码
表白墙
前面的案例中,我们写了表白墙,但是⼀旦服务器重启,数据仍然会丢失.
 要想数据不丢失,需要把数据存储在数据库中.接下来咱们借助MyBatis来实现数据的操作
 
数据准备
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;
ONUPDATEnow():当数据发生更新操作时,自动把该列的值设置为now(),
 now()可以替换成其他获取时间的标识符,⽐如:CURRENT_TIMESTAMP(),LOCALTIME()等MySQL<5.6.5
- 只有TIMESTAMP⽀持自动更新
- ⼀个表只能有⼀列设置自动更新
- 不允许同时存在两个列,其中⼀列设置了DEFAULTCURRENT_TIMESTAMP,]
- TIMESTAMP和DATETIME都⽀持自动更新,且可以有多列
引入MyBatis和MySQL驱动依赖
修改pom文件
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>3.0.3</version>
</dependency>
<dependency>
	<groupId>com.mysql</groupId>
	<artifactId>mysql-connector-j</artifactId>
	<scope>runtime</scope>
</dependency>
或者使用插件EditStarters来引入依赖

配置MySQL账号密码
spring:
	datasource:
		url: jdbc:mysql://127.0.0.1:3306/mybatis_test?
characterEncoding=utf8&useSSL=false
		username: root
		password: root
		driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
	configuration: # 配置打印 MyBatis⽇志
		map-underscore-to-camel-case: true #配置驼峰自动转换
编写后端代码
import lombok.Data;
@Data
public class MessageInfo {
	private Integer id;
	private String from;
	private String to;
	private String message;
	private Integer deleteFlag;
	private Date createTime;
	private Date updateTime;
}
MessageInfoMapper
import com.example.demo.model.MessageInfo;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface MessageInfoMapper {
	@Select("select `id`, `from`, `to`, `message` from message_info where delete_flag=0")
	List<MessageInfo> queryAll();
	
	@Insert("insert into message_info (`from`,`to`, `message`) values(#{from},#{to},#{message})")
	Integer addMessage(MessageInfo messageInfo);
}
MessageInfoService
import com.example.demo.mapper.MessageInfoMapper;
import com.example.demo.model.MessageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class MessageInfoService {
	@Autowired
	private MessageInfoMapper messageInfoMapper;
	
	public List<MessageInfo> queryAll() {
		return messageInfoMapper.queryAll();
	}
	
	public Integer addMessage(MessageInfo messageInfo) {
		return messageInfoMapper.addMessage(messageInfo);
	}
}
MessageController
import com.example.demo.model.MessageInfo;
import com.example.demo.service.MessageInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RequestMapping("/message")
@RestController
public class MessageController {
    @Autowired
    private MessageInfoService messageInfoService;
    /**
     * 获取留言列表
     * @return
     */
    @RequestMapping("/getList")
    public List<MessageInfo> getList() {
        return messageInfoService.queryAll();
    }
    /**
     * 发表留言
     * @param messageInfo
     * @return
     */
    @RequestMapping("/publish")
    public boolean publish(MessageInfo messageInfo) {
        System.out.println(messageInfo);
        if (StringUtils.hasLength(messageInfo.getFrom())
                && StringUtils.hasLength(messageInfo.getTo())
                && StringUtils.hasLength(messageInfo.getMessage())) {
            messageInfoService.addMessage(messageInfo);
            return true;
        }
        return false;
    }
}
测试代码
部署程序,验证服务器是否能正确响应:http://127.0.0.1:8080/messagewall.html
 
 输入留言信息,点击提交,发现页面列表显示新的数据,并且数据库中也添加了⼀条记录.
 

 重启服务,页面显示不变.



















