0


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启动类中,@SpringBootApplication的源码分析链接!
文档链接: https://zhuanlan.zhihu.com/p/301063931

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


1.创建数据库

首先,数据库–>创建一个数据库名称: goods
-- 创建数据库createdatabase goods ;-- 进入 goods数据库use goods ;
创建表–>商品表:goods 和 类型表:type
CREATETABLE`goods`(-- 商品表`id`intNOTNULLAUTO_INCREMENT,`goodsName`varchar(255)CHARACTERSET utf8mb4 COLLATE utf8mb4_german2_ci NULLDEFAULTNULL,`goodsPrice`decimal(10,2)NULLDEFAULTNULL,`goodsNum`intNULLDEFAULTNULL,`goodsType`intNULLDEFAULTNULL,`remark`varchar(255)CHARACTERSET utf8mb4 COLLATE utf8mb4_german2_ci NULLDEFAULTNULL,PRIMARYKEY(`id`)USINGBTREE)ENGINE=InnoDBCHARACTERSET= utf8mb4 COLLATE= utf8mb4_german2_ci ROW_FORMAT = Dynamic;-- 添加数据INSERTINTO`goods`VALUES(1,'华为手机',2500.00,8,1,'手机质量好');INSERTINTO`goods`VALUES(2,'苹果',15.00,5,2,'品质优,水分多而甜');INSERTINTO`goods`VALUES(3,'苹果手机',18000.00,1,1,'价格贵');INSERTINTO`goods`VALUES(4,'华硕电脑',8000.00,1,3,'高配置,性能强');INSERTINTO`goods`VALUES(5,'格力空调',2500.00,1,4,'格力空调,好品质,值得信赖');CREATETABLE`type`(-- 类型表`typeId`intNOTNULLAUTO_INCREMENT,`typeName`varchar(255)CHARACTERSET utf8mb4 COLLATE utf8mb4_german2_ci NULLDEFAULTNULL,PRIMARYKEY(`typeId`)USINGBTREE)ENGINE=InnoDBCHARACTERSET= utf8mb4 COLLATE= utf8mb4_german2_ci ROW_FORMAT = Dynamic;-- 添加数据INSERTINTO`type`VALUES(1,'手机');INSERTINTO`type`VALUES(2,'水果');INSERTINTO`type`VALUES(3,'电脑');INSERTINTO`type`VALUES(4,'电器');

2.idea创建项目

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

在这里插入图片描述##### (2)选择Springboot版本 和 所需要的依赖
在这里插入图片描述##### (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

在这里插入图片描述##### (1)实体类pojo ==> Goods

@DatapublicclassGoods{privatelong id;privateString goodsName;privatedouble goodsPrice;privatelong goodsNum;privateString goodsType;privateString remark;}
(2)接口mapper ==> GoodsMapper 接口

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

@MapperpublicinterfaceGoodsMapper{/**
     * 查询所有商品信息
     * @return
     */List<Goods>getGoodsList();/**
     * 添加商品信息
     * @param goods
     * @return
     */intaddGoods(Goods goods);/**
     * 根据id删除商品信息
     * @param id
     * @return
     */intdeleteGoodsById(@Param("id")Integer id);/**
     * 根据id查询商品信息
     * @param id
     * @return
     */GoodsfindGoodsById(@Param("id")Integer id);/**
     * 根据id修改商品信息
     * @param id
     * @return
     */intupdateGoodsById(Goods goods);}
(3)编写mapper的映射文件 GoodsMapper.xml
<?xml version="1.0" encoding="utf-8" ?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 命名空间为mapper接口 --><mappernamespace="com.ithjc.mapper.GoodsMapper"><selectid="getGoodsList"resultType="goods">
        select *
        from goods
    </select><selectid="findGoodsById"resultType="goods">
    select * from goods where id = #{id}
    </select><insertid="addGoods"parameterType="goods">
        insert into goods (id,goodsName, goodsPrice, goodsNum, goodsType, remark)
        values (null,#{goodsName}, #{goodsPrice}, #{goodsNum}, #{goodsType}, #{remark});
    </insert><deleteid="deleteGoodsById"parameterType="java.lang.Integer">
        delete
        from goods
        where id = #{id};
    </delete><updateid="updateGoodsById"parameterType="goods">
        update goods
        <set><iftest="goodsName != null and goodsName != ''">
                goodsName = #{goodsName},
            </if><iftest="goodsPrice != null and goodsPrice != ''">
                goodsPrice = #{goodsPrice},
            </if><iftest="goodsType != null and goodsType != ''">
                goodsType = #{goodsType},
            </if><iftest="goodsNum != null and goodsNum != ''">
                goodsType = #{goodsType},
            </if><iftest="remark != null and remark != ''">
                remark = #{remark}
            </if></set>
        where id = #{id};
    </update></mapper>
(4)service ==> GoodsService 和 实现接口 Impl ==>GoodsServiceImpl

首先是,GoodsService

publicinterfaceGoodsService{List<Goods>getGoodsList();intaddGoods(Goods goods);intdeleteGoodsById(Integer id);GoodsfindGoodsById(Integer id);intupdateGoodsById(Goods goods);}

再实现接口,GoodsServiceImpl

写入

@Service

注解,交由Spring管理

@ServicepublicclassGoodsServiceImplimplementsGoodsService{@AutowiredprivateGoodsMapper goodsMapper;@OverridepublicList<Goods>getGoodsList(){return goodsMapper.getGoodsList();}@OverridepublicintaddGoods(Goods goods){return goodsMapper.addGoods(goods);}@OverridepublicintdeleteGoodsById(Integer id){return goodsMapper.deleteGoodsById(id);}@OverridepublicGoodsfindGoodsById(Integer id){return goodsMapper.findGoodsById(id);}@OverridepublicintupdateGoodsById(Goods goods){return goodsMapper.updateGoodsById(goods);}

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

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

封装数据类:R

/**
 * 统一返回数据 json 格式 前后端 分离 json
 **/@DatapublicclassR{//状态值privateBoolean success;//状态吗privateInteger code;//数据privateString message;privateMap<String,Object> data =newHashMap<String,Object>();privateR(){}publicstaticRok(){R r =newR();
        r.setSuccess(ResultCodeEnum.SUCCESS.getSuccess());
        r.setCode(ResultCodeEnum.SUCCESS.getCode());
        r.setMessage(ResultCodeEnum.SUCCESS.getMessage());return r;}publicstaticRerror(){R r =newR();
        r.setSuccess(ResultCodeEnum.UNKNOWN_REASON.getSuccess());
        r.setCode(ResultCodeEnum.UNKNOWN_REASON.getCode());
        r.setMessage(ResultCodeEnum.UNKNOWN_REASON.getMessage());return r;}publicstaticRsetResult(ResultCodeEnum resultCodeEnum){R r =newR();
        r.setSuccess(resultCodeEnum.getSuccess());
        r.setCode(resultCodeEnum.getCode());
        r.setMessage(resultCodeEnum.getMessage());return r;}publicRsuccess(Boolean success){this.setSuccess(success);returnthis;}publicRmessage(String message){this.setMessage(message);returnthis;}publicRcode(Integer code){this.setCode(code);returnthis;}publicRdata(String key,Object value){this.data.put(key, value);returnthis;}publicRdata(Map<String,Object> map){this.setData(map);returnthis;}
(2)
ResultCodeEnum

类!

枚举类 :ResultCodeEnum

@GetterpublicenumResultCodeEnum{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,"用户未登录,请重新登录");privateBoolean success;privateInteger code;privateString message;privateResultCodeEnum(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%2B8username: root
    password: root

6.编写业务代码 (crud)

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

写入

@Controller

注解!

@ControllerpublicclassGoodsController{@AutowiredprivateGoodsService goodsService;@RequestMapping("/getAll")@ResponseBodypublicRgetAll(){List<Goods> goodsList = goodsService.getGoodsList();returnR.ok().data("goodsList",goodsList);}@RequestMapping("/addGoods")@ResponseBodypublicRaddGoods(Goods goods){int i = goodsService.addGoods(goods);returnR.ok().data("addGoods",i);}@RequestMapping("/deleteGoods")@ResponseBodypublicRdeleteGoodsById(@RequestParam("id")Integer id){int i = goodsService.deleteGoodsById(id);returnR.ok().data("deleteGoods",i);}@RequestMapping("/getGoods")@ResponseBodypublicRgetGoodsById(@RequestParam("id")Integer id){Goods goods = goodsService.findGoodsById(id);returnR.ok().data("goods",goods);}@RequestMapping("/updateGoods")@ResponseBodypublicRupdateGoodsById(Goods goods){int i = goodsService.updateGoodsById(goods);returnR.ok().data("updateGoods",i);}

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

在这里插入图片描述

我这里使用的ApiPost,国产的Http请求测试工具,使用教程如下:在这里插入图片描述
(2)Http请求:
查询选择: GET 请求
localhost:8080/getAll
增加选择:POST 请求
localhost:8080/addGoods

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

在这里插入图片描述

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

删除数据时,根据id删除:
在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述


本文转载自: https://blog.csdn.net/qq_60506984/article/details/128379410
版权归原作者 Jesse.小超 所有, 如有侵权,请联系我们删除。

“Springboot整合mybatis实现增删改查(crud)”的评论:

还没有评论