SpringBoot+MyBatisPlus+Swagger2整合进行增删改查

前言:
本片文章采用的是SpringBoot+MybatisPlus+Swagger2,目的是使用
MybatisPlus完成增删改查操作。

一、增删改查操作

1.Sql语句

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `name` varchar(30) DEFAULT NULL COMMENT '姓名',
  `age` int(11) DEFAULT NULL COMMENT '年龄',
  `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

SET FOREIGN_KEY_CHECKS = 1;

2.项目结构

image.png

3.使用自动生成插件-生成代码

大家可以参考这篇文章EasyCode(代码神器)
既然是使用了MybatisPlus的话,我们可以将插件自动生成的代码进行删除。

  • UserDao.xml


    UserDao.xml
  • UserDao.java
    删除多余代码并使该接口继承BaseMapper
    image.png

顺便将service和controller生成的多余代码删除,要不然会报错!

4.pom.xml

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1.tmp</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.9.3</version>
        </dependency>

5 配置文件

application.yml

spring:
#  数据源
  datasource:
#    用户名
    username: root
#    密码
    password: 123456
#    链接
    url: jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
#    驱动
    driver-class-name: com.mysql.jdbc.Driver
#mybatis-plus 配置
mybatis-plus:
  mapper-locations: classpath:/mapper/*Dao.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.mp.helo.entity

6 配置类

Swagger2Configuration.java

@Configuration
@EnableSwagger2
public class Swagger2Configuration {

    public static final String VERSION = "1.0.0";
    //api接口包扫描路径
    public static final String SWAGGER_SCAN_BASE_PACKAGE = "com.mp.helo.controller";
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage(SWAGGER_SCAN_BASE_PACKAGE))
                .paths(PathSelectors.any()) // 可以根据url路径设置哪些请求加入文档,忽略哪些请求
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("MP接口测试") //设置文档的标题
                .description("MybatisPlus接口测试") // 设置文档的描述
                .version(VERSION) // 设置文档的版本信息-> 1.0.0 Version information
                .termsOfServiceUrl("www.756316064@qq.com") // 设置文档的License信息->1.3 License information
                .build();
    }
}

6 entity

User.java

@Data
public class User implements Serializable {
    private static final long serialVersionUID = -23543490379469815L;
    /**
    * 主键ID
    */
    @TableId(value = "id",type = IdType.AUTO)
    private Long id;
    /**
    * 姓名
    */
    private String name;
    /**
    * 年龄
    */
    private Integer age;
    /**
    * 邮箱
    */
    private String email;

}

7 dao

UserDao.java

@Mapper
public interface UserDao extends BaseMapper<User> {
}

8 service

UserService.java

/**
 * (User)表服务接口
 *
 * @author makejava
 * @since 2020-05-16 23:11:09
 */
public interface UserService extends IService<User>{
}

UserServiceImpl.java

/**
 * (User)表服务实现类
 *
 * @author makejava
 * @since 2020-05-16 23:11:09
 */
@Service("userService")
public class UserServiceImpl extends ServiceImpl<UserDao,User> implements UserService {
}

9 controller

UserController.java

@Api(description = "用户API接口")
@RestController
@RequestMapping("user")
public class UserController {
    /**
     * 服务对象
     */
    @Resource
    private UserService userService;

   @ApiOperation(value = "新增")
    @PostMapping("insert")
    public boolean insert(@RequestBody User user){
        return this.userService.save(user);
    }

    @ApiOperation(value = "修改")
    @PostMapping("update")
    public boolean update(@RequestBody User user){
        return this.userService.updateById(user);
    }

    @ApiOperation(value = "删除")
    @GetMapping("deleteById")
    public boolean deleteById(@RequestParam("id") Integer id){
        return this.userService.removeById(id);
    }

    @ApiOperation(value = "批量删除")
    @GetMapping("deleteBatchById")
    public boolean deleteBatchById(@RequestBody List<Integer> id){
        return this.userService.removeByIds(id);
    }

    @ApiOperation(value = "根据ID查询")
    @GetMapping("quertUserById")
    public User quertUserById(@RequestParam("id") Integer id){
        return this.userService.getById(id);
    }

    @ApiOperation(value = "分页查询")
    @GetMapping("quertUserByPage")
    public IPage<User> quertUserByPage(@RequestParam("page") Integer page, @RequestParam("limit") Integer limit){
        Page<User> userPage = new Page<>();
        IPage<User> userIPage = this.userService.page(userPage);
        return userIPage;
    }


   
}

10 启动类

HeloApplication.java

@EnableSwagger2
@SpringBootApplication
@MapperScan("com.mp.helo.dao")
public class HeloApplication {
    public static void main(String[] args) {
        SpringApplication.run(HeloApplication.class, args);
    }
}

访问地址:http://127.0.0.1:8080/doc.html

11 测试

image.png

11.1 添加

image.png

可能出现的问题:

  "message": "nested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.mp.helo.entity.User' with value '1236448483748507649' Cause: java.lang.IllegalArgumentException: java.lang.ClassCastException@3a92a1b",

解决办法:
在主键ID上加上该注解即可:
@TableId(type = IdType.AUTO,value = "id")

11.2删除

image.png

11.3 修改

image.png

11.4 分页查询

image.png

11.5 根据ID查询

image.png

代码链接:

链接:https://pan.baidu.com/s/1uEgdRn0twC7CyNd3ciXISQ 密码:62gq

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342