Springboot整合mybatis实现增删改查(crud)

这篇具有很好参考价值的文章主要介绍了Springboot整合mybatis实现增删改查(crud)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringBoot整合Mybatis

今天我们来学习一个Springboot案例!!

那么什么是SpringBoot技术呢?

  • Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。
  • 该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
  • Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

SpringBoot有哪些特点:

(1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;

(2)内嵌Tomcat或Jetty等Servlet容器;

(3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;

(4)尽可能自动配置Spring容器;

(5)提供准备好的特性,如指标、健康检查和外部化配置;

(6)绝对没有代码生成,不需要XML配置

SpringBoot的核心功能有哪些?

  1. 独立运行:SpringBoot开发的应用可以以JRA包的形式独立运行,运行一个SpringBoot应用只需通过 java –jar xxxx.jar 来运行。
  2. 内嵌容器:SpringBoot内嵌了多个WEB容器,如:Tomcat、Jetty、Undertow,所以可以使用非WAR包形式进行项目部署;
  3. 自动starter依赖:SpringBoot提供了一系列的starter来简化Maven的依赖加载。starter是一组方便的依赖关系描述符,它将常用的依赖分组并将其合并到一个依赖中,这样就可以一次性将相关依赖添加到Maven或Gradle中;
  4. 自动配置:SpringBoot会根据在类路径中的JAR包和类,自动将类注入到SpringBoot的上下文中,极大地减少配置的使用;
  5. 应用监控:SpringBoot提供基于http、ssh、telnet的监控方式,对运行时的项目提供生产级别的服务监控和健康检测;
  6. 无代码生成/无需编写XML配置:SpringBoot不是借助于代码生成来实现的,而是通过条件注解来实现的,这是 Spring 4.x 提供的新特性。Spring4.x提倡使用Java配置和注解组合,无需编写任何xml配置即可实现Spring的所有配置功能;

该案例主要使用到的技术有:Springboot、mybatis,外加一个测试工具 Postman 或者 ApiPost都是可以的!http请求测试工具。

话不多说,开始整活!!!上代码。

特点:Springboot与SSM之间是类似的,并且Springboot没有减少代码,而是Springboot通过注解的形式帮我们封装了SSM的过程,简化了编写代码的量!
springboot整合mybatis编写测试类验证crud功能,个人模板,mybatis,spring boot,java,postman,intellij idea这里提供一个Springboot启动类中,@SpringBootApplication的源码分析链接!
文档链接: https://zhuanlan.zhihu.com/p/301063931

话不多说,开始整活!!!写代码。


1.创建数据库

首先,数据库–>创建一个数据库名称: goods
-- 创建数据库
create database goods ;
-- 进入 goods数据库
use goods ; 
创建表–>商品表:goods 和 类型表:type
CREATE TABLE `goods`  ( -- 商品表
  `id` int NOT NULL AUTO_INCREMENT,
  `goodsName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL,
  `goodsPrice` decimal(10, 2) NULL DEFAULT NULL,
  `goodsNum` int NULL DEFAULT NULL,
  `goodsType` int NULL DEFAULT NULL,
  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_german2_ci ROW_FORMAT = Dynamic;
-- 添加数据
INSERT INTO `goods` VALUES (1, '华为手机', 2500.00, 8, 1, '手机质量好');
INSERT INTO `goods` VALUES (2, '苹果', 15.00, 5, 2, '品质优,水分多而甜');
INSERT INTO `goods` VALUES (3, '苹果手机', 18000.00, 1, 1, '价格贵');
INSERT INTO `goods` VALUES (4, '华硕电脑', 8000.00, 1, 3, '高配置,性能强');
INSERT INTO `goods` VALUES (5, '格力空调', 2500.00, 1, 4, '格力空调,好品质,值得信赖');

CREATE TABLE `type`  ( -- 类型表
  `typeId` int NOT NULL AUTO_INCREMENT,
  `typeName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL,
  PRIMARY KEY (`typeId`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_german2_ci ROW_FORMAT = Dynamic;
-- 添加数据
INSERT INTO `type` VALUES (1, '手机');
INSERT INTO `type` VALUES (2, '水果');
INSERT INTO `type` VALUES (3, '电脑');
INSERT INTO `type` VALUES (4, '电器');

2.idea创建项目

(1)进入创建项目查窗口

springboot整合mybatis编写测试类验证crud功能,个人模板,mybatis,spring boot,java,postman,intellij idea##### (2)选择Springboot版本 和 所需要的依赖
springboot整合mybatis编写测试类验证crud功能,个人模板,mybatis,spring boot,java,postman,intellij idea##### (3)创建完成后导入 mybatis依赖

<!--Springboot整合mybatis依赖包-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>

3.创建三层架构 pojo、service和impl、mapper

springboot整合mybatis编写测试类验证crud功能,个人模板,mybatis,spring boot,java,postman,intellij idea##### (1)实体类pojo ==> Goods

@Data
public class Goods {
  private long id;
  private String goodsName;
  private double goodsPrice;
  private long goodsNum;
  private String goodsType;
  private String remark;
}
(2)接口mapper ==> GoodsMapper 接口

编写mapper接口,并写入Spring管理注解(交由IoC管理)

@Mapper
public interface GoodsMapper {
    /**
     * 查询所有商品信息
     * @return
     */
    List<Goods> getGoodsList();
    
    /**
     * 添加商品信息
     * @param goods
     * @return
     */
    int addGoods(Goods goods);
    
    /**
     * 根据id删除商品信息
     * @param id
     * @return
     */
    int deleteGoodsById(@Param("id") Integer id);

    /**
     * 根据id查询商品信息
     * @param id
     * @return
     */
    Goods findGoodsById(@Param("id") Integer id);

    /**
     * 根据id修改商品信息
     * @param id
     * @return
     */
    int updateGoodsById(Goods goods);
}
(3)编写mapper的映射文件 GoodsMapper.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接口 -->
<mapper namespace="com.ithjc.mapper.GoodsMapper">
    <select id="getGoodsList" resultType="goods">
        select *
        from goods
    </select>

    <select id="findGoodsById" resultType="goods">
    select * from goods where id = #{id}
    </select>

    <insert id="addGoods" parameterType="goods">
        insert into goods (id,goodsName, goodsPrice, goodsNum, goodsType, remark)
        values (null,#{goodsName}, #{goodsPrice}, #{goodsNum}, #{goodsType}, #{remark});
    </insert>

    <delete id="deleteGoodsById" parameterType="java.lang.Integer">
        delete
        from goods
        where id = #{id};
    </delete>

    <update id="updateGoodsById" parameterType="goods">
        update goods
        <set>
            <if test="goodsName != null and goodsName != ''">
                goodsName = #{goodsName},
            </if>
           <if test="goodsPrice != null and goodsPrice != ''">
                goodsPrice = #{goodsPrice},
            </if>
            <if test="goodsType != null and goodsType != ''">
                goodsType = #{goodsType},
            </if>
             <if test="goodsNum != null and goodsNum != ''">
                goodsType = #{goodsType},
            </if>
             <if test="remark != null and remark != ''">
                remark = #{remark}
            </if>
        </set>
        where id = #{id};
    </update>
</mapper>
(4)service ==> GoodsService 和 实现接口 Impl ==>GoodsServiceImpl

首先是,GoodsService

public interface GoodsService {
    List<Goods> getGoodsList();
    int addGoods(Goods goods);
    int deleteGoodsById(Integer id);
    Goods findGoodsById(Integer id);
    int updateGoodsById(Goods goods);
}

再实现接口,GoodsServiceImpl

写入@Service注解,交由Spring管理

@Service
public class GoodsServiceImpl implements GoodsService {

    @Autowired
    private GoodsMapper goodsMapper;

    @Override
    public List<Goods> getGoodsList() {
        return goodsMapper.getGoodsList();
    }

    @Override
    public int addGoods(Goods goods) {
        return goodsMapper.addGoods(goods);
    }

    @Override
    public int deleteGoodsById(Integer id) {
        return goodsMapper.deleteGoodsById(id);
    }

    @Override
    public Goods findGoodsById(Integer id) {
        return goodsMapper.findGoodsById(id);
    }

    @Override
    public int updateGoodsById(Goods goods) {
        return goodsMapper.updateGoodsById(goods);
    }

4.使用数据统一格式 工具类util

(1)统一返回的数据类型 和 状态码

封装数据类:R

/**
 * 统一返回数据 json 格式 前后端 分离 json
 **/
@Data
public class R {

    //状态值
    private Boolean success;

    //状态吗
    private Integer code;

    //数据
    private String message;

    private Map<String, Object> data = new HashMap<String, Object>();

    private R(){}

    public static R ok(){
        R r = new R();
        r.setSuccess(ResultCodeEnum.SUCCESS.getSuccess());
        r.setCode(ResultCodeEnum.SUCCESS.getCode());
        r.setMessage(ResultCodeEnum.SUCCESS.getMessage());
        return r;
    }

    public static R error(){
        R r = new R();
        r.setSuccess(ResultCodeEnum.UNKNOWN_REASON.getSuccess());
        r.setCode(ResultCodeEnum.UNKNOWN_REASON.getCode());
        r.setMessage(ResultCodeEnum.UNKNOWN_REASON.getMessage());
        return r;
    }

    public static R setResult(ResultCodeEnum resultCodeEnum){
        R r = new R();
        r.setSuccess(resultCodeEnum.getSuccess());
        r.setCode(resultCodeEnum.getCode());
        r.setMessage(resultCodeEnum.getMessage());
        return r;
    }

    public R success(Boolean success){
        this.setSuccess(success);
        return this;
    }

    public R message(String message){
        this.setMessage(message);
        return this;
    }

    public R code(Integer code){
        this.setCode(code);
        return this;
    }

    public R data(String key, Object value){
        this.data.put(key, value);
        return this;
    }

    public R data(Map<String, Object> map){
        this.setData(map);
        return this;
    }
(2)ResultCodeEnum 类!

枚举类 :ResultCodeEnum

@Getter
public enum ResultCodeEnum {

    SUCCESS(true, 200,"成功"),
    UNKNOWN_REASON(false, 20001, "未知错误"),
    BAD_SQL_GRAMMAR(false, 21001, "sql语法错误"),
    JSON_PARSE_ERROR(false, 21002, "json解析异常"),
    PARAM_ERROR(false, 21003, "参数不正确"),
    FILE_UPLOAD_ERROR(false, 21004, "文件上传错误"),
    EXCEL_DATA_IMPORT_ERROR(false, 21005, "Excel数据导入错误"),
    USERLOGIN_INVALID_ERROR(false, 21007,"登录信息过期,请重新登录"),
    USERUNLOGIN_ERROR(false, 21008,"用户未登录,请重新登录");

    private Boolean success;

    private Integer code;

    private String message;

    private ResultCodeEnum(Boolean success, Integer code, String message) {
        this.success = success;
        this.code = code;
        this.message = message;
    }

5.编写Springboot的配置文件

Springboot的配置文件是在,resources 包下的 application.properties
我们一般使用的是 .yml 或者 .yaml格式的配置手法!!

(1)所以首先,把application.properties 改为 application.yml

application.yml 配置文件编写

# 设置端口
server:
  port: 8080

# mybatis 的配置 
mybatis:
  type-aliases-package: com.ithjc.pojo
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath:/mapper/*.xml
  
# spring 的配置  
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/goods?characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: root
    password: root

6.编写业务代码 (crud)

(1)创建 controller 包 ==>类名:GoodsController

GoodsController

写入@Controller注解!

@Controller
public class GoodsController {

    @Autowired
    private GoodsService goodsService;

    @RequestMapping("/getAll")
    @ResponseBody
    public R getAll(){
        List<Goods> goodsList = goodsService.getGoodsList();
        return R.ok().data("goodsList",goodsList);
    }

    @RequestMapping("/addGoods")
    @ResponseBody
    public R addGoods(Goods goods){
        int i = goodsService.addGoods(goods);
        return R.ok().data("addGoods",i);
    }

    @RequestMapping("/deleteGoods")
    @ResponseBody
    public R deleteGoodsById(@RequestParam("id")Integer id){
        int i = goodsService.deleteGoodsById(id);
        return R.ok().data("deleteGoods",i);
    }

    @RequestMapping("/getGoods")
    @ResponseBody
    public R getGoodsById(@RequestParam("id") Integer id){
        Goods goods = goodsService.findGoodsById(id);
        return R.ok().data("goods",goods);
    }

    @RequestMapping("/updateGoods")
    @ResponseBody
    public R updateGoodsById(Goods goods){
        int i = goodsService.updateGoodsById(goods);
        return R.ok().data("updateGoods",i);
    }

7.使用Postman 或者ApiPost ==>API在线测试工具

springboot整合mybatis编写测试类验证crud功能,个人模板,mybatis,spring boot,java,postman,intellij idea

我这里使用的ApiPost,国产的Http请求测试工具,使用教程如下:springboot整合mybatis编写测试类验证crud功能,个人模板,mybatis,spring boot,java,postman,intellij idea
(2)Http请求:
查询选择: GET 请求
localhost:8080/getAll
增加选择:POST 请求
localhost:8080/addGoods

增加数据时,需要加入参数:

springboot整合mybatis编写测试类验证crud功能,个人模板,mybatis,spring boot,java,postman,intellij idea

删除选择:DELETE 请求 或者 POST 请求
localhost:8080/deleteGoods

删除数据时,根据id删除:
springboot整合mybatis编写测试类验证crud功能,个人模板,mybatis,spring boot,java,postman,intellij idea

修改选择:PUT 请求 或者 POST 请求
localhost:8080/updateGoods

修改数据时,根据id修改,和修改那些数据(我使用了mybatis的动态sql,所以修改指定数据即可,看您的需求)

springboot整合mybatis编写测试类验证crud功能,个人模板,mybatis,spring boot,java,postman,intellij idea

查询选择:GET 请求
localhost:8080/getGoods

springboot整合mybatis编写测试类验证crud功能,个人模板,mybatis,spring boot,java,postman,intellij idea文章来源地址https://www.toymoban.com/news/detail-816054.html

到了这里,关于Springboot整合mybatis实现增删改查(crud)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mybatis实现CRUD详解(使用mapper映射文件实现增删改查)

    创建maven项目:项目结构如图所示 准备数据库表: 准备pom.xml所需的依赖: 编写核心配置文件加载所需要的资源 编写config.xml文件 创建工厂连接数据处理工具SqlSessionUtil.java SqlSessionUtil.java 创建学生实体类对象Student.java 1、查询所有学生信息: 创建接口StudentDao.java:向其中添加

    2023年04月23日
    浏览(28)
  • SpringBoot入门篇3 - 整合junit、整合mybatis、基于SpringBoot实现ssm整合

    目录 Spring整合JUnit  SpringBoot整合JUnit 测试类注解:@SpringBootTest 作用:设置JUnit加载的SpringBoot启动类 ①使用spring initializr初始化项目的时候,添加依赖。  ②设置数据源application.yml 注意: SpringBoot版本低于2.4.3,Mysql驱动版本大于8.0时,需要在url连接串中配置时区。 ③定义数据

    2024年02月10日
    浏览(34)
  • SpringBoot+Mybatis-Plus实现增删改查超详细步骤

    目录 一、介绍 视频讲解 二、前期准备工作 (一) 创建springboot项目和创建数据库 三、项目配置 (一)pom.xl导入相关依赖  1.导入依赖 (二)yml文件中配置连接数据库 2.配置yml文件  四、代码的编写 数据库展示 项目提前展示!!! (三)MySQL表绑定到spring boot(实体层)

    2024年02月13日
    浏览(26)
  • springboot整合easy-es实现数据的增删改查

    背景 目前公司的一个老项目,查询贼慢,需要想办法提升一下速度,于是就想到了ES,现在尝试一下将ES整合到项目中来提升检索效率。 ES是基于倒排索引实现的,倒排索引中一个表相当于一个索引,表中的每条记录都是一个文档(JSON数据),系统会先对字段数据进行分词,

    2024年01月20日
    浏览(36)
  • SpringBoot+Mybatis-Plus实现增删改查(配视频讲解)--项目阶段1

    目录 一、介绍 视频讲解 二、前期准备工作 (一) 创建springboot项目和创建数据库 三、项目配置 (一)pom.xl导入相关依赖  1.导入依赖 (二)yml文件中配置连接数据库 2.配置yml文件  四、代码的编写 数据库展示 项目提前展示!!! (三)MySQL表绑定到spring boot(实体层)

    2024年02月11日
    浏览(24)
  • springBoot + mybatis-plus 实现监听 mysql的数据增删改的监听

    在Spring Boot + MyBatis-Plus中实现MySQL数据增删改的监听,可以通过以下步骤: 1. 添加MyBatis-Plus依赖,在pom.xml文件中添加以下依赖:   2. 配置MyBatis-Plus,通常在application.yml文件中进行配置: 3. 创建监听器类,实现com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor接口。  4. 在My

    2024年02月15日
    浏览(79)
  • MyBatis整合Springboot多数据源实现

    数据源,实际就是数据库连接池,负责管理数据库连接,在 Springboot 中,数据源通常以一个 bean 的形式存在于 IOC 容器中,也就是我们可以通过依赖注入的方式拿到数据源,然后再从数据源中获取数据库连接。 那么什么是多数据源呢,其实就是 IOC 容器中有多个数据源的 bea

    2023年04月22日
    浏览(47)
  • SpringBoot整合Mybatis-plus实现商品推荐

    在开始编写代码之前,我们需要准备一下环境: Java 8+ IntelliJ IDEA Node.js 和 npm Vue CLI 如果你还没有安装Vue CLI,则可以使用以下命令在终端中安装: 首先,我们需要使用Spring Boot创建一个新项目。在IntelliJ IDEA中,选择“New Project”,然后选择“Spring Initializr”。 在“New Project”

    2024年02月01日
    浏览(35)
  • MyBatis的基本入门及Idea搭建MyBatis坏境且如何一步骤实现增删改查(CRUD)---详细介绍

       首先是一个 开源的Java持久化框架 ,它可以帮助开发人员简化数据库访问的过程并提供了一种将SQL语句与Java代码进行解耦的方式,使得开发人员可以更加灵活地进行数据库操作。 MyBatis不仅是开源框架,也给我们带来了许多好处的点,如下: 1.1.1简化数据库操作    MyBa

    2024年02月12日
    浏览(28)
  • 整合vue elementui springboot mybatisplus前后端分离的 简单增加功能 删改查未实现

    涉及知识点 1.springboot项目启动创建  配置yml文件 2.mybatisplus的使用 3.vue的vite文件配置 4.vue springboot 前后端数据交互 1.建立项目的配置文件 src/main/resources/application.yml 2.建立项目 pom.xml 3.建立数据库表 4.建立实体类 cn.webrx.pojo.User 5.建立项目入口程序App cn.webrx.App 6.建立sevices axi

    2024年02月07日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包