Springboot整合Mybatis-Plus

在这里插入图片描述- # 介绍

Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。(摘自mybatis-plus官网)Mybatis虽然已经给我们提供了很大的方便,但它还是有不足之处,MP的存在就是为了稍稍弥补Mybatis的不足。在我们使用Mybatis时会发现,每当要写一个业务逻辑的时候都要在DAO层写一个方法,再对应一个SQL,即使是简单的条件查询、即使仅仅改变了一个条件都要在DAO层新增一个方法,针对这个问题,MP这样一个框架,一种集Mybatis与Hibernate的优点一起的框架。它提供了Hibernate的单表CURD操作的方便同时,又保留了Mybatis的特性。

  • SpringBoot集成

    • 配置pom

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-jdbc</artifactId>
      </dependency>
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>6.0.6</version>
      </dependency>
      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-boot-starter</artifactId>
          <version>3.1.0</version>
      </dependency>
      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-core</artifactId>
          <version>3.1.0</version>
      </dependency>
      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-extension</artifactId>
          <version>3.1.0</version>
      </dependency>
      
    • 编辑application.yml

      server:
        port: 8080
      spring:
        application:
          name: boot-admin
        profiles:
          active: dev
        datasource:
          type: com.alibaba.druid.pool.DruidDataSource
          druid:
            filter: stat,wall,logging
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://localhost:3306/jjckj_boot?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false
            username: root
            password: abel123
            initial-size: 1
            min-idle: 1
            max-active: 20
            max-wait: 60000
            time-between-eviction-runs-millis: 60000
            min-evictable-idle-time-millis: 300000
            validation-query: SELECT 'X'
            test-while-idle: true
            test-on-borrow: false
            test-on-return: false
            pool-prepared-statements: false
            max-pool-prepared-statement-per-connection-size: 20
        aop:
          proxy-target-class: true
          auto: true
      mybatis-plus:
        mapper-locations: classpath:/mappers/*Mapper.xml
        type-aliases-package: com.jjckj.boot.model.entity
        global-config:
          db-config:
            id-type: auto
            field-strategy: not_empty
            table-underline: true
            logic-delete-value: 1
            logic-not-delete-value: 0
        configuration:
          map-underscore-to-camel-case: true
          cache-enabled: false
          jdbc-type-for-null: 'null'
      
    • 创建Users对象

      @Data
      @Accessors(chain = true)
      public class Users extends BaseEntity {
      
          private static final long serialVersionUID = -1437321349541571114L;
          
          /**
           * 主键
           */
          @TableId(value = "id", type = IdType.INPUT)
          private Long id;
      
          /**
           * 备注
           */
          private String remark;
      
          /**
           * 登录名
           */
          private String username;
      
          /**
           * 登录密码
           */
          private String password;
      
          /**
           * 邮件
           */
          private String email;
      
          /**
           * 手机号码
           */
          private String mobile;
      
           /**
           * 创建者ID
           */
          private Long creatorId;
      
          /**
           * 创建时间
           */
          @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
          @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
          private Date createTime;
      
          /**
           * 操作人ID
           */
          private Long modifierId;
      
          /**
           * 操作时间
           */
          @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
          @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
          private Date modifyTime;
      
          /**
           * 是否删除 1-删除,0-未删除
           */
          private String delFlag;
          
      }
      
    • 创建UsersMapper.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 namespace="com.jjckj.boot.mapper.UsersMapper">
      </mapper>
      
    • 创建UsersMapper

      public interface UsersMapper extends BaseMapper<Users> {
      }
      
    • 创建UsersService

      public interface UsersService extends IService<Users> {
      }
      
    • 创建UsersServiceImpl

      @Service
      public class UsersServiceImpl extends ServiceImpl<UsersMapper, Users> implements UsersService {
      }
      
    • 测试Mapper

      private void deleteUsersWithRole(Long userId) {
          QueryWrapper<RoleUser> roleUserQueryWrapper = new QueryWrapper<>();
          roleUserQueryWrapper.lambda().eq(RoleUser::getUserId, userId);
          roleUserMapper.delete(roleUserQueryWrapper);
      }
      
      @Override
      public List<Users> getAllList() {
          QueryWrapper<Users> wrapper = new QueryWrapper<>();
          wrapper.lambda().eq(PageElement::getDelFlag, DelFlagEnum.NORMAL.getCode());
          List<Users> userList = wrapper.selectList(wrapper);
          return userList;
      }
      
    • 测试Service

      @Override
      public Wrapper<Boolean> update(@RequestBody Users users) {
          return WrapMapper.ok(usersService.updateById(users));
      }
      
      @Override
      public Wrapper<Boolean> delete(@PathVariable("id") Long id) {
          return WrapMapper.ok(usersService.removeById(id));
      }
      
      @Override
      public Wrapper<Users> get(@PathVariable("id") Long id) {
          return WrapMapper.ok(usersService.getById(id));
      }
      
  • 总结

本文主要是对Mybatis-plus的集成和简单使用进行了说明,详细的用法,可到官网查看,官网有详细的使用指南,这里就不班门弄斧了。至此,对于一般的开发需求基本上都可以满足了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AbelEthan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值