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

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

背景

大家好,我是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_编写一个简单的增删改查接口到此结束

如有不足或者错误欢迎指出!

感谢你的阅读!


目录
相关文章
|
5天前
|
SQL 存储 Java
基于MyBatis的增删改查操作
基于MyBatis的增删改查操作
12 1
|
5天前
|
存储 Java Maven
Spring Boot WebFlux 增删改查完整实战 demo
Spring Boot WebFlux 增删改查完整实战 demo
|
7天前
|
存储 Java 数据安全/隐私保护
Spring Boot中实现邮箱登录/注册接口
Spring Boot中实现邮箱登录/注册接口
|
5天前
|
SQL 存储 Java
基于MyBatis的增删改查的基础操作
基于MyBatis的增删改查的基础操作
11 0
|
1天前
|
Java 关系型数据库 MySQL
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
10 4
|
1天前
|
Java 数据库连接 数据库
Springboot整合mybatis注解版(202005)
Springboot整合mybatis注解版(202005)
11 3
|
1天前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
8 2
|
5天前
|
前端开发 Java 开发者
在Spring框架中,`PathMatcher`是用于进行URL路径匹配的接口
在Spring框架中,`PathMatcher`是用于进行URL路径匹配的接口
25 6
|
1天前
|
安全 前端开发 Java
挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构
挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构
6 1
|
1天前
|
Java 程序员
浅浅纪念花一个月完成Springboot+Mybatis+Springmvc+Vue2+elementUI的前后端交互入门项目
浅浅纪念花一个月完成Springboot+Mybatis+Springmvc+Vue2+elementUI的前后端交互入门项目
11 1