当前位置:   article > 正文

springboot 实现增删改查CRUD_springboot 自动生成增删改查

springboot 自动生成增删改查

springboot 实现增删改查CRUD

环境:jdk1.8 / mysql5.7 / springboot实现书籍增删改查的demo

第一步、准备数据库创建表
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book`  (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '书籍名称',
  `author` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '作者',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES (1, '西游记', '吴承恩');
INSERT INTO `book` VALUES (2, '三国演义', '罗贯中');
INSERT INTO `book` VALUES (3, '水浒传', '施耐庵');
INSERT INTO `book` VALUES (4, '红楼梦', '曹雪芹');

SET FOREIGN_KEY_CHECKS = 1;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

image-20220324090856969

第二步、创建springboot项目

image-20220324092141328

image-20220324092513552

在pom.xml文件中添加mybatis-plus逆向工程依赖,添加依赖后记得导入刷新
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.3.2</version>
</dependency>

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity</artifactId>
    <version>1.7</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
在com.hapek下创建utils包,在utils下创建GenerateTest类 (标有***都是可能要根据自己的情况修改配置)
package com.hapek.com.hapek.utils;  //注意是自己文件所在的包名  ***

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class GenerateTest {
    public static void main(String[] args) {
        //创建generator对象
        AutoGenerator autoGenerator = new AutoGenerator();
        //数据源
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("数据库密码");    //数据库密码 ***
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/数据库名");		//替换成自己的数据库名 ***
        autoGenerator.setDataSource(dataSourceConfig);
        //全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");
        globalConfig.setAuthor("admin");
        globalConfig.setOpen(false);
        globalConfig.setServiceName("%sService");
        autoGenerator.setGlobalConfig(globalConfig);
        //包信息
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.hapek");		//生成文件所在的目录 ***
        packageConfig.setEntity("entity");
        packageConfig.setMapper("mapper");
        packageConfig.setService("service");
        packageConfig.setServiceImpl("service.impl");
        packageConfig.setController("controller");
        autoGenerator.setPackageInfo(packageConfig);
        //策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setInclude("表名");		//需要逆向生成的表名,多张表可用逗号隔开,这里表名写book ***
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setEntityLombokModel(true);			//是否使用lombok ***
        autoGenerator.setStrategy(strategyConfig);
        //运行
        autoGenerator.execute();
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
修改完成配置后,点击运行,生成目录结构如下图

image-20220324102628034

在resources文件目录下创建application.yml文件(注意文件位置)
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath:com/hapek/mapper/xml/*.xml
server:
  port: 8181
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

image-20220324102811183

在启动类上加入 @MapperScan(value = “com.hapek.mapper”)

image-20220324102418925

在BookController中编写业务接口 先编写一个查询操作测试
@RestController
@RequestMapping("/book")
public class BookController {
    @Resource
    private BookServiceImpl bookService;

    @GetMapping("/findAll")
    public List<Book> findAll(){
        return bookService.list();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
运行测试

image-20220324103059929

image-20220324103303774

image-20220324103531104

分析一下为什么只需要在controller层中编写接口方法即可。

在service层中BookService 继承了 IService 而在IService中中已经集成了基础的CRUD的操作,故BookService也拥有这些基础的CRUD方法。故直接在controller层中注入service即可,而在mapper层中BookMapper 继承了 BaseMapper, BaseMapper中已经封装好了CRUD这样的方法,故BookMapper不必再写CRUD相关的sql语句。

接下来在BookcController中继续编写删除,插入,增加操作

    // 新增用户
    @PostMapping
    public boolean addBook(@RequestBody Book book) {
        return bookService.save(book);
    }

    // 修改用户
    @PutMapping
    public boolean updateBook(@RequestBody Book book) {
        return bookService.save(book);
    }

    // 删除用户
    @DeleteMapping("{id}")
    public boolean delBook(@PathVariable("id") Long id) {
        return bookService.removeById(id);
    }

    // 根据id查询用户
    @GetMapping("findById/{id}")
    public Book findById(@PathVariable Long id) {
        return bookService.getById(id);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

在test中编写测试类测试相关功能:略

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/358347
推荐阅读
相关标签
  

闽ICP备14008679号