springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)

文章目录

  • 前言
  • 一、新建springboot工程
  • 二、新增依赖,修改配置文件
  • 三、新建数据库
  • 四、业务代码
    • 新增bean包
    • 新增config包
    • 新建controller包
    • 新建Mapper包
    • 新建service包
    • 启动类指定mapper文件夹
  • 四、接口测试
    • 新增
    • 修改
    • 查询
    • 删除
  • 五、mybatis使用官方参考
  • 六、总结
    • 步骤回顾
    • 其他说明
    • 源码:


前言

记录了使用springboot 创建一个demo工程,整合mybatisplus实现mysql的增删改查(CRUD)功能,最后通过swagger展示接口及测试,傻瓜式流程,工程测试通过。
废话不多说,Let’s do it!


一、新建springboot工程

使用spring initializr创建工程。
这里用默认的有时候连接会异常导致新建工程失败,可以手动改为使用阿里云的地址:https://start.aliyun.com。

springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第1张图片
Artfact必须小写,否则会点击下一步会报字符导致的异常。
springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第2张图片
勾选springweb和MyBatis
springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第3张图片
填写项目名称:springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第4张图片
删除工程里面多余的东西:
springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第5张图片

二、新增依赖,修改配置文件

pom文件添加依赖:


<dependency>
    <groupId>org.mybatis.spring.bootgroupId>
    <artifactId>mybatis-spring-boot-starterartifactId>
    <version>2.2.0version>
dependency>

<dependency>
    <groupId>org.projectlombokgroupId>
    <artifactId>lombokartifactId>
dependency>

<dependency>
    <groupId>mysqlgroupId>
    <artifactId>mysql-connector-javaartifactId>
    <version>5.1.49version>
dependency>


<dependency>
    <groupId>com.baomidougroupId>
    <artifactId>mybatis-plus-boot-starterartifactId>
    <version>3.4.3.1version>
dependency>


<dependency>
    <groupId>io.springfoxgroupId>
    <artifactId>springfox-swagger2artifactId>
    <version>2.8.0version>
dependency>
<dependency>
    <groupId>io.springfoxgroupId>
    <artifactId>springfox-swagger-uiartifactId>
    <version>2.8.0version>
    
    <dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-webartifactId>
    dependency>
dependency>

resources目录下面新建配置文件application.yaml,并写上数据库和mybatis配置:

#        数据库配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mytest?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

#配置mybatis规则
#指定mybatis全局映射文件和sql映射文件
mybatis:
  #  config-location: classpath:mybatis/mybatis-config.xml  #全局配置文件位置,一般不适用,直接配置在yaml里面即可
  #  这里要注意,用了config.xml就不能
#  mapper-locations: classpath:mybatis/mapper/*.xml  #sql映射文件位置
  configuration:
    #    开启驼峰命名规则,也就是数据库的user_id可以对应java的userId,默认是不开启的。
    map-underscore-to-camel-case: true
## 标题

springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第6张图片

三、新建数据库

在mysql数据库新建数据表user:

CREATE TABLE `user` (
  `id` bigint(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`)
)

四、业务代码

新增bean包

创建User实体

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@TableName("user") //mybatis默认会从数据库里面寻找user表,如果需要指定表明,使用@TableName("user")指定即可
public class User {
    @TableId(type= IdType.AUTO) //解决新增数据自增id很大的问题
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

新建Result类,统一返回格式

/**
 * 响应体,主要用来做接口统一返回格式
 */
@Data
public class Result {
    // 定义jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();

    // 响应业务状态
    private Integer status;

    // 响应消息
    private String msg;

    // 响应中的数据
    private Object data;

    public Result() {
    }

    public Result(Integer status, String msg, Object data) {
        this.status = status;
        this.msg = msg;
        this.data = data;
    }

    public Result(Object data) {
        this.status = 0;
        this.msg = "OK";
        this.data = data;
    }

    public static Result ok() {
        return new Result(null);
    }

    public static Result ok(Object data) {
        return new Result(data);
    }

    public static Result build(Integer status, String msg) {
        return new Result(status, msg, null);
    }

    public static Result build(Integer status, String msg, Object data) {
        return new Result(status, msg, data);
    }
}

在这里插入图片描述

新增config包

新建MyBatisConfig类

/**
 * 使用这个配置类体添加mybatisplus的分页插件
 */
@Configuration
public class MyBatisConfig {
    // 最新版
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
        return interceptor;
    }
}

新建SpringfoxDocConfig类,指定控制器路径

/**
 * swagger配置类
 */
@Configuration
@EnableSwagger2
public class SpringfoxDocConfig {
    boolean test = true;
    @Bean
    public Docket customDocket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors
                        .basePackage("com.yunjia.controller"))
                .paths(PathSelectors.any()).build()
                .useDefaultResponseMessages(false).enable(test);
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("springboot整合数据库接口文档").build();
    }
}

springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第7张图片

新建controller包

新建UserController类,里面包含了crud方法。报红先不管,是缺少引用导致,工程建立完毕之后再回来添加引用即可。

@RestController
@Slf4j
@RequestMapping("/user")
@Api(value = "/user",tags = "用户操作") //分类标题
public class UserController {
    @Autowired
    UserService userService;

    /**
     * 查询所有记录
     * @return
     */
    @GetMapping("/getAllUser")
    public Page<User> getAllUser() {
        List<User> list = userService.list();
        for (User user : list) {
            log.info(user.toString());
        }
        //构建分页对象
        Page<User> userPage = new Page<>(2,2);
        //第一个参数为分页对象,第二个为查询条件(可以不写)
        Page<User> page = userService.page(userPage, null);
        log.info("总页码:" + page.getPages());
        log.info("总记录数:" + page.getTotal());
        return page;
    }

    /**
     * 根据id获取数据
     * @param
     * @return
     */
    @RequestMapping(value = "/getUserById",method = RequestMethod.POST)
    @ApiOperation(value = "根据id获取用户信息",notes = "实际参数是一个user对象,取对象里面的id查数据库")
    public Result getUserById(@RequestBody User user){
        log.info("收到了请求:" + user.getId());
        User userSelect = userService.getById(user.getId());
        log.info("查到了对象:" + userSelect);
        return Result.ok(userSelect);
    }

    /**
     * 根据id更新数据
     * @param user
     * @return
     */
    @PostMapping("/update")
    @ApiOperation(value = "根据id更新数据",notes = "")
    public Result updateById(@RequestBody User user){
        boolean ret = userService.updateById(user);
        if (!ret){
            return Result.build(-1,"更新失败");
        }
        return Result.ok();
    }

    /**
     * 新增用户
     * @param user
     * @return
     */
    @PostMapping("/save")
    @ApiOperation("新增用户")
    public Result saveUser(@RequestBody User user){
        try {
            boolean ret = userService.save(user);
            if (!ret){
                return Result.build(-1,"新增失败");
            }
            return Result.ok();
        } catch (Exception e) {
            return Result.build(-1,e.getMessage());
        }
    }

    /**
     * 删除用户
     * @param user
     * @return
     */
    @PostMapping("/delete")
    @ApiOperation("删除用户")
    public Result deleteUser(@RequestBody User user){
        try {
            boolean ret = userService.removeById(user.getId());
            if (!ret){
                return Result.build(-1,"删除失败");
            }
            return Result.ok();
        } catch (Exception e) {
            return Result.build(-1,e.getMessage());
        }
    }
}

新建Mapper包

新建UserMapper接口

public interface UserMapper extends BaseMapper<User> {
}

springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第8张图片

新建service包

新建UserService接口

/**
 * ServiceImpl 第一个参数是需要操作的表对应的Mapper,第二个参数表示返回的类型
 */
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第9张图片

启动类指定mapper文件夹

启动类上面添加注解@MapperScan(“com.yunjia.mapper”)

@SpringBootApplication
@MapperScan("com.yunjia.mapper") //这个包下面所有类都标注为mapper。但是还是建议给每个类上面标注mapper。
public class MybatisdemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisdemoApplication.class, args);
    }
}

四、接口测试

启动工程,打开swagger http://localhost:8080/swagger-ui.html可以查看接口文档。测试接口使用postman。
springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第10张图片

新增

springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第11张图片

修改

springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第12张图片

查询

springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第13张图片

删除

springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第14张图片

五、mybatis使用官方参考

打开mybatis官网:https://github.com/mybatis
进入spring-boot-starter:
springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第15张图片

选择发布版最新版本,这里可以回去修改pom里面的mybatis文件版本为最新的:

springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第16张图片
进入quick start:

springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第17张图片
可以参考步骤:
springboot整合mybatisplus实现mysql数据库的增删改查(CRUD)_第18张图片


六、总结

步骤回顾

1、新建工程
2、pom里面引入依赖,配置application.yaml
3、新建数据表
4、编写业务代码
5、@MapperScan注解指定扫描路径

其他说明

简单业务使用注解方式实现,复杂业务还需要进行mapper.xml绑定映射,这里就不展开了。

源码:

点击下载源码

你可能感兴趣的:(教程,java,mysql,mybatis)