spring+mybatis_编写一个简单的增删改查接口

52 阅读4分钟

spring编写一个crud

背景

大家好,我是yma16,想记录微信小程序用户调用openai时候的操作操作写入数据库,技术选型采用spring+mybatis

什么是spring mybatis

Spring Mybatis 是一款轻量级、快速、高效的持久层框架,是基于 Mybatis 的增强版本。它可以与 Spring 框架无缝集成,提供了更加方便的使用方式。

Spring Mybatis 解决了传统 Mybatis 在使用中存在的缺陷,比如需要手动创建 SqlSession、需要手动管理事务等;同时也提供了更加便捷的注解方式和 XML 配置方式,使得开发人员可以根据不同的需求进行选择。

Spring Mybatis 的主要特点如下:

  1. 支持注解方式和 XML 配置方式,可以根据不同的需求进行选择。
  2. 与 Spring 框架无缝集成,提供了更加方便的使用方式。
  3. 自动管理事务,简化了事务管理的复杂度。
  4. 提供了更加方便的 CRUD 操作方式。
  5. 支持动态 SQL,可以根据不同的条件生成不同的 SQL 语句,提高了 SQL 的灵活性。
  6. 提供了二级缓存机制,可以提高查询效率。

总之,Spring Mybatis 是一款功能强大、易于使用的持久层框架,可以帮助开发人员快速、高效地进行数据库操作。

封装统一的返回格式

思想:返回统一的格式给前端,封装一个result
{code,message,data}

package com.yma16.springcloud.entites;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 公共的参数返回
 * @param <T>
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommonResult <T>{
    private Integer code;
    private String message;
    private T data;
    public CommonResult(Integer code,String message){
        this(code,message,null);
    }
}

数据库

设置id为主键
在这里插入图片描述

entities层

映射数据库字段

package com.yma16.springcloud.entites;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Product implements Serializable {
    private String id;
    private String name;
    private String kind;
    private String url;
    private String relate_user_name;
    private String relate_user_id;
    private String description;
    private String back;
    private String front;
    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private java.util.Date create_time;
    /**
     * 更新时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private java.util.Date update_time;
}

dao层

package com.yma16.springcloud.dao;
import com.yma16.springcloud.entites.Product;
import com.yma16.springcloud.vo.ProductUpdateVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.ArrayList;

/**
 * author:yma16
 * date: 2022-12-31
 */
@Mapper
public interface ProductDao {
    public int create(Product product);
    public int delete(@Param("id") String id);
    public int update(ProductUpdateVo productUpdateVo);
    public ArrayList<Product> search(Product product);
    public ArrayList<Product> getList();
}

service

包装一层dao

interface

package com.yma16.springcloud.service;

import com.yma16.springcloud.entites.Product;
import com.yma16.springcloud.vo.ProductUpdateVo;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;

/**
 * author:yma16
 * date:2022-12-31
 */
public interface ProductService {
    public int create(Product product);
    public int delete(@Param("id") String id);
    public int update(ProductUpdateVo productUpdateVo);
    public ArrayList<Product> search(Product product);
    public ArrayList<Product> getList();
}

implement

package com.yma16.springcloud.service.impl;

import com.yma16.springcloud.dao.ProductDao;
import com.yma16.springcloud.entites.Product;
import com.yma16.springcloud.service.ProductService;
import com.yma16.springcloud.vo.ProductUpdateVo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;

@Service
public class ProductserviceImpl implements ProductService {
    @Resource
    private ProductDao productDao;

    public int create(Product product){
        return productDao.create(product);
    };

    public int delete(String id){
        return productDao.delete(id);
    }

    public int update(ProductUpdateVo productUpdateVo){
        return productDao.update(productUpdateVo);
    }

    public ArrayList<Product> search(Product product){
        return productDao.search(product);
    }
    public ArrayList<Product> getList(){
        return productDao.getList();
    }

}

mapper

<?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.yma16.springcloud.dao.ProductDao">
    <!--    添加产品-->
    <insert id="create" parameterType="com.yma16.springcloud.entites.Product" useGeneratedKeys="true" keyProperty="id">
        insert into product(id,name,kind,description,url,front,back,create_time,relate_user_id,relate_user_name) values(#{id},#{name},#{kind},#{description},#{url},#{front},#{back},#{create_time},#{relate_user_id},#{relate_user_name});
    </insert>
    <!--    查询产品-->
    <resultMap id="searchList" type="com.yma16.springcloud.entites.Product">
        <id column="name" property="name"/>
    </resultMap>
    <select id="search" resultMap="searchList">
        select * from product where name=#{name} and kind=#{kind};
    </select>

    <resultMap id="productList" type="com.yma16.springcloud.entites.Product">
        <id column="id" property="id"/>
    </resultMap>
    <select id="getList" resultMap="productList">
        select * from product;
    </select>

    <!--    更新-->
    <update id="update" parameterType="com.yma16.springcloud.entites.Product">
        update product set url=#{url},name=#{name},kind=#{kind},front=#{front},description=#{description},back=#{back},update_time=#{update_time} where id=#{id};
    </update>

    <!--    删除-->
    <delete id="delete" parameterType="com.yma16.springcloud.entites.Product">
        delete from product where id=#{id};
    </delete>
</mapper>

controller

package com.yma16.springcloud.controller;

import com.yma16.springcloud.entites.CommonResult;
import com.yma16.springcloud.entites.Product;
import com.yma16.springcloud.service.ProductService;
import com.yma16.springcloud.vo.ProductUpdateVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.UUID;

@RestController
@Slf4j
public class ProductController {
    @Resource
    private ProductService productService;

    @PostMapping(value="product/add")
    public CommonResult addProduct(@RequestBody Product product){
        Product createVo=new Product();
        UUID uid=UUID.randomUUID();
        createVo.setId(uid.toString());
        createVo.setUrl(product.getUrl());
        createVo.setName(product.getName());
        createVo.setKind(product.getKind());
        createVo.setDescription(product.getDescription());
        createVo.setBack(product.getBack());
        createVo.setFront(product.getFront());
        createVo.setCreate_time(new Date());
        int result=productService.create(createVo);
        if(result>0){
            return new CommonResult(200,"创建成功",createVo);
        }
        else{
            return new CommonResult(0,"失败",null);
        }
    }

    @PostMapping(value="product/search")
    public CommonResult searchProduct(@RequestBody Product product){
        ArrayList<Product> result=productService.search(product);
        if(result!=null){
            return new CommonResult(200,"查询成功",result);
        }
        else{
            return new CommonResult(0,"失败",null);
        }
    };

    @GetMapping(value="product/list")
    public CommonResult getProductList(){
        ArrayList<Product> productList=productService.getList();
        if(!productList.isEmpty()){
            return new CommonResult(200,"获取成功",productList);
        }
        else{
            return new CommonResult(0,"失败",null);
        }
    };

    @DeleteMapping(value="product/delete/{id}")
    public CommonResult deleteProductById(@PathVariable("id") String id){
        int result=productService.delete(id);
        if(result>0){
            return new CommonResult(200,"删除成功",result);
        }
        else{
            return new CommonResult(0,"失败",null);
        }
    }

    @PutMapping(value="product/update")
    public CommonResult updateProduct(@RequestBody ProductUpdateVo productUpdateVo){
        productUpdateVo.setUpdate_time(new Date());
        int result=productService.update(productUpdateVo);
        if(result>0){
            return new CommonResult(200,"更新成功",productUpdateVo);
        }
        else{
            return new CommonResult(0,"失败",null);
        }
    }
}

postman测试

没问题!
在这里插入图片描述

结尾

本文分享spring+mybatis_编写一个简单的增删改查接口到此结束
如有不足或者错误欢迎指出!
感谢你的阅读!在这里插入图片描述