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小时问题

仅此记录,如有问题还请提出,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值