Springboot整合mybatis CRUD
快速创建工程(选择web、mybatis、mysql坐标)



选择spring web坐标,旧版这里是web

选择mybatis和mysql坐标



application.properties中添加数据库链接信息
#mysql 数据库连接信息
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
配置的属性key来自spring-configuration-metadata.json文件

创建表
DROP TABLE IF EXISTS `message`;
CREATE TABLE `message` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`title` VARCHAR(50) DEFAULT NULL,
`content` VARCHAR(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
INSERT INTO `message` VALUES (1, '出租1', '出租世纪花园三室一厅');
INSERT INTO `message` VALUES (2, '出租2', '出租外滩三室一厅');
SELECT * FROM message;
创建domain包,并创建Message实体
package com.hj.city.domain;
public class Message {
private int id;
private String title;
private String content;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@Override
public String toString() {
return "Message{" +
"id=" + id +
", title='" + title + '\'' +
", content='" + content + '\'' +
'}';
}
}
创建mapper文件夹并创建MessageMapper.java接口
package com.hj.city.mapper;
import com.hj.city.domain.Message;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface MessageMapper {
/**
* 获取所有消息
* @return 消息集合
*/
List<Message> queryAll();
/**
* 根据id查询消息
* @param id
* @return
*/
Message queryMessageById(int id);
/**
* 新增消息
* @param msg
* @return 影响行数
*/
int saveMessage(Message msg);
/**
* 更新消息
* @param msg
* @return 影响数据库记录的行数
*/
int updateMessage(Message msg);
/**
* 根据 id 删除消息
* @param msgId
* @return
*/
int deleteMessage(Integer msgId);
}
创建mapper映射xml文件
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.hj.city.mapper.MessageMapper">
<select id="queryAll" resultType="message">
select * from message
</select>
<select id="queryMessageById" resultType="message" parameterType="int">
select * from message where id = #{uid}
</select>
<insert id="saveMessage" parameterType="message">
<!-- 配置保存时获取插入的 id -->
<selectKey keyColumn="id" keyProperty="id" resultType="int">
select last_insert_id();
</selectKey>
INSERT INTO `message`(title,content) VALUES (#{title}, #{content});
</insert>
<!-- 更新消息 -->
<update id="updateMessage" parameterType="message">
update message set title=#{title},content=#{content} where id=#{id}
</update>
<!-- 删除消息 -->
<delete id="deleteMessage" parameterType="int">
delete from message where id = #{id}
</delete>
</mapper>
在application.properties中配置mybatis的autoconfigure信息
#spring集成Mybatis环境
#pojo扫描包
mybatis.type-aliases-package=com.hj.city.domain
#加载Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
配置的属性key来自mybatis坐标的spring-configuration-metadata.json文件

创建controller包,创建MessageController.java
package com.hj.city.controller;
import com.hj.city.domain.Message;
import com.hj.city.mapper.MessageMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
public class MessageController {
@Autowired(required = false)
private MessageMapper messageMapper;
@RequestMapping(value = "/queryAll", method = RequestMethod.GET)
@ResponseBody
public List<Message> queryAll() {
return messageMapper.queryAll();
}
@RequestMapping(value = "/queryOne", method = RequestMethod.GET)
@ResponseBody
public Message queryMessageById(int id) {
return messageMapper.queryMessageById(id);
}
@RequestMapping(value = "/saveMessage", method = RequestMethod.POST)
@ResponseBody
public String saveMessage(String title, String content) {
Message message = new Message();
message.setTitle(title);
message.setContent(content);
int result = messageMapper.saveMessage(message);
if (result > 0) {
return "新增成功-id:" + message.getId();
}else{
return "新增失败";
}
}
@RequestMapping(value = "/updateMessage", method = RequestMethod.PUT)
@ResponseBody
public String udateMessageById(int id, String title, String content) {
Message message = queryMessageById(id);
message.setTitle(title);
message.setContent(content);
int result = messageMapper.updateMessage(message);
if (result > 0) {
return "更新成功" + message.toString();
}else{
return "更新失败";
}
}
@RequestMapping(value = "/deleteMessage", method = RequestMethod.DELETE)
@ResponseBody
public String deleteMessage(int id) {
int result = messageMapper.deleteMessage(id);
if (result > 0) {
return "删除成功";
}else{
return "删除失败";
}
}
}
使用postman测试
查询所有

根据id查询某条message

新增message

修改某个id对应的message

根据id删除message

碰到问题1:查看mysql 版本,6需要使用新驱动
com.mysql.jdbc.Driver与com.mysql.cj.jdbc.Driver
碰到问题2:需要指定时区问题,否则会出现8小时问题
仅此记录,如有问题还请提出,谢谢!

302

被折叠的 条评论
为什么被折叠?



