手摸手2-springboot编写基础的增删改查

目录

手摸手2-springboot编写基础的增删改查

创建controller层

实现 test 表中的添加、修改、删除及列表查询接口(未分页)

java 复制代码
package com.onejson.ojmall.controller;

import com.onejson.ojmall.entity.TestEntity;
import com.onejson.ojmall.entity.dto.TestDTO;
import com.onejson.ojmall.entity.vo.TestVO;
import com.onejson.ojmall.service.ITestService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

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

/**
 * 测试表
 *
 * @author 微信公众号 onejson
 * @date 2023-08-11
 */
@RestController
@RequestMapping(path = "/test", produces = "application/json;charset=UTF-8")
@Api(value = "/test", tags = "测试表", produces = "application/json;charset=UTF-8")
public class TestController{

    @Resource
    private ITestService testService;

    /**
     * 查询列表
     */
    @ApiOperation(value = "条件查询列表分页", notes = "条件查询列表分页")
    @GetMapping("/list")
    public List<TestEntity> list(TestEntity sysTest) {
        return testService.selectTestList(sysTest);
    }

    /**
     * 新增
     */
    @ApiOperation(value = "新增")
    @PostMapping
    public boolean add(@Validated @RequestBody TestDTO testDTO) {
        return testService.insertTest(testDTO);
    }

    /**
     * 修改
     */
    @ApiOperation(value = "更新")
    @PutMapping
    public boolean edit(@RequestBody TestDTO testDTO) {
        return testService.updateTest(testDTO);
    }

    /**
     * 详情
     */
    @ApiOperation(value = "详情")
    @GetMapping(value = "/{id}")
    public TestVO getInfo(@PathVariable("id") Integer id) {

        return testService.getTestById(id);
    }

    /**
     * 删除
     */
    @ApiOperation(value = "删除")
    @DeleteMapping("/{ids}")
    public boolean remove(@PathVariable Integer[] ids) {
        return testService.removeTestByIds(ids);
    }


}

添加service层接口

java 复制代码
package com.onejson.ojmall.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.onejson.ojmall.entity.TestEntity;
import com.onejson.ojmall.entity.dto.TestDTO;
import com.onejson.ojmall.entity.vo.TestVO;

import java.util.List;


/**
 * 测试表
 *
 * @author 微信公众号 onejson
 * @date 2023-08-11 11:24:47
 */
public interface ITestService extends IService<TestEntity> {


    /**
     * 查询测试表列表
     *
     * @param testEntity 测试表Entity类
     * @return list列表
     */
    List<TestEntity> selectTestList(TestEntity testEntity);


    /**
     * 新增测试表
     *
     * @param testDTO 测试表DTO类
     * @return 结果
     */
    boolean insertTest(TestDTO testDTO);


    /**
     * 更新测试表
     *
     * @param testDTO 测试表DTO类
     * @return 结果
     */
    boolean updateTest(TestDTO testDTO);


    /**
     * 详情测试表
     *
     * @param id id值
     * @return 结果
     */
    TestVO getTestById(Integer id);


    /**
     * 删除测试表
     *
     * @param ids id数组
     * @return 结果
     */
    boolean removeTestByIds(Integer[] ids);


}

service层实现

java 复制代码
package com.onejson.ojmall.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.onejson.ojmall.entity.TestEntity;
import com.onejson.ojmall.entity.dto.TestDTO;
import com.onejson.ojmall.entity.vo.TestVO;
import com.onejson.ojmall.mapper.TestMapper;
import com.onejson.ojmall.service.ITestService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;

/**
 * 测试表
 *
 * @author 微信公众号 onejson
 * @date 2023-08-11
 */
@Service
@Transactional
public class TestServiceImpl extends ServiceImpl<TestMapper, TestEntity> implements ITestService {

    @Resource
    private TestMapper testMapper;


    /**
     * 查询测试表列表
     *
     * @param testEntity 测试表Entity类
     * @return 测试表
     */
    @Override
    public List<TestEntity> selectTestList(TestEntity testEntity) {
        return testMapper.selectTestList(testEntity);
    }

    /**
     * 新增测试表
     *
     * @param testDTO 测试表DTO类
     * @return 结果
     */
    @Override
    public boolean insertTest(TestDTO testDTO) {

        TestEntity testInfoEntity = new TestEntity();
        BeanUtils.copyProperties(testDTO, testInfoEntity);

        return this.save(testInfoEntity);
    }

    /**
     * 更新测试表
     *
     * @param testDTO 测试表DTO类
     * @return 结果
     */
    @Override
    public boolean updateTest(TestDTO testDTO) {

        TestEntity testInfoEntity = new TestEntity();
        BeanUtils.copyProperties(testDTO, testInfoEntity);

        return this.updateById(testInfoEntity);
    }


    /**
     * 详情测试表
     *
     * @param id id值
     * @return 结果
     */
    @Override
    public TestVO getTestById(Integer id) {

        TestEntity testEntity = this.getById(id);
        TestVO testVO = new TestVO();
        BeanUtils.copyProperties(testEntity, testVO);

        return testVO;
    }


    /**
     * 删除测试表
     *
     * @param ids id数组
     * @return 结果
     */
    @Override
    public boolean removeTestByIds(Integer[] ids) {
        return this.removeByIds(Arrays.asList(ids));
    }


}

添加mapper层

java 复制代码
package com.onejson.ojmall.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.onejson.ojmall.entity.TestEntity;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;


/**
 * 测试表
 *
 * @author 微信公众号 onejson
 * @date 2023-08-11 11:24:47
 */
@Mapper
public interface TestMapper extends BaseMapper<TestEntity> {


    /**
     * 查询测试表列表
     *
     * @param testEntity 测试表Entity类
     * @return list列表
     */
    List<TestEntity> selectTestList(TestEntity testEntity);

    /**
     * 统计测试表个数
     *
     * @param testEntity 测试表Entity类
     * @return 符合条件的记录个数
     */
    Integer countTest(TestEntity testEntity);


}

mapper层对应的sql

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.onejson.ojmall.mapper.TestMapper">

    <!-- 可根据自己的需求,是否要使用 -->
    <resultMap type="com.onejson.ojmall.entity.TestEntity" id="testMap">
        <result property="id" column="id"/>
        <result property="title" column="title"/>
    </resultMap>

    <sql id="selectTest">
        select *
        from test
    </sql>

    <sql id="whereTest">
        <where>
            <if test="id !=null and id !=''">AND id = #{id,jdbcType=VARCHAR}</if>
            <if test="title !=null and title !=''">AND title = #{title,jdbcType=VARCHAR}</if>
        </where>
    </sql>

    <select id="selectTestList" parameterType="com.onejson.ojmall.entity.TestEntity" resultMap="testMap">
        <include refid="selectTest"/>
        <include refid="whereTest"/>
    </select>

    <select id="countTest" parameterType="com.onejson.ojmall.entity.TestEntity" resultType="java.lang.Integer">
        SELECT count(*)
        FROM (
        <include refid="selectTest"/>
        <include refid="whereTest"/>
        ) a
    </select>


</mapper>

添加扫描注解,对应sql文件的目录

java 复制代码
@MapperScan("com.onejson.ojmall.mapper")
相关推荐
2401_857439691 小时前
Spring Boot新闻推荐系统:用户体验优化
spring boot·后端·ux
hong_zc1 小时前
算法【Java】—— 二叉树的深搜
java·算法
进击的女IT2 小时前
SpringBoot上传图片实现本地存储以及实现直接上传阿里云OSS
java·spring boot·后端
Miqiuha2 小时前
lock_guard和unique_lock学习总结
java·数据库·学习
杨半仙儿还未成仙儿3 小时前
Spring框架:Spring Core、Spring AOP、Spring MVC、Spring Boot、Spring Cloud等组件的基本原理及使用
spring boot·spring·mvc
一 乐3 小时前
学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习
数云界3 小时前
如何在 DAX 中计算多个周期的移动平均线
java·服务器·前端
阑梦清川3 小时前
Java继承、final/protected说明、super/this辨析
java·开发语言
GISer_Jing3 小时前
【React】增量传输与渲染
前端·javascript·面试
快乐就好ya5 小时前
Java多线程
java·开发语言