springcloud中追加mybatis-plus的步骤

公司springcloud框架中使用的持久层是mybatis,为了与时俱进,最近决定采用更先进的技术提高生产力,最近打算把mybatis替换成加强版mybatis-plus,以下是本次的升级过程,以及过程中遇到的坑。

1、本次做了一个common,把controller、entity、mapper、service的基本功能进行一下简单的封装

首先追加mybatis-plus的依赖

        <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>

在这里插入图片描述
entity、mapper、service的框架基类都是mybatis-plus中使用的,没有做什么特殊处理,留好基类,为了以后继续拓展用,都是只做了一下继承mybatis-plus。

BaseEntity.java

package com.rcyj.common.base.entity;

import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * @author YaoHuaJun
 * @since 2019-12-14
 */
@EqualsAndHashCode(callSuper = true)
@Data
public abstract class BaseEntity<T extends BaseCreatedEntity<T>> extends BaseCreatedEntity<T> {
//    /**
//     * 删除状态
//     */
//    @TableLogic
//    private int deleteState;
}

接口BaseMapper.java

package com.rcyj.common.base.mapper;

/**
 * @author YaoHuaJun
 * @since 2019-12-14
 */
public interface BaseMapper<T> extends com.baomidou.mybatisplus.core.mapper.BaseMapper<T> {

}

接口BaseService.java

package com.rcyj.common.base.service;

import com.baomidou.mybatisplus.extension.service.IService;

/**
 * @author YaoHuaJun
 * @since 2019-12-14
 */
public interface BaseService<T> extends IService<T> {

}

实体类BaseServiceImpl.java

package com.rcyj.common.base.service.impl;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.rcyj.common.base.service.BaseService;

/**
 * @author YaoHuaJun
 * @since 2019-12-14
 */
public class BaseServiceImpl<M extends BaseMapper<T>, T> extends ServiceImpl<M, T> implements BaseService<T> {

}

2、本次追加了做业务模块
追加依赖

        <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>

yml文件中追加(mybatis-plus不实用xml配置sql,注释掉就可以了)

# mybatis-plus
mybatis-plus:
  #mapper-locations: classpath*:mapper/**/*Mapper.xml
  #实体扫描,多个package用逗号或者分号分隔
  type-aliases-package: com.rcyj.systemex.entity
  global-config:
    sql-parser-cache: true
    db-config:
      id-type: id_worker_str
      logic-delete-value: 1
      logic-not-delete-value: 0
    banner: false
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: true
    #    打印SQL
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

controller文件中追加

    /**
     * 获取单个详情
     *
     * @param id
     * @return
     */

    @GetMapping(API_PREFIX + PATH + "/select")
    public ResponseEntity select(String id) {
        return ResponseEntity.ok(this.dictionaryService.getById(id));
    }

entity文件

package com.rcyj.systemex.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.rcyj.common.base.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * @author: YaoHuaJun
 * @create: 2019-12-14 11:21
 **/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("sys_dict")
public class Dictionary extends BaseEntity {

    private String typeCode;

    private String name;

    private Byte value;

    private String parentTypeCode;

    private Byte isDeleted;

    private LocalDateTime createTime;

    private LocalDateTime updateTime;
}

mapper文件追加

package com.rcyj.systemex.mapper;

import com.rcyj.common.base.mapper.BaseMapper;
import com.rcyj.systemex.entity.Dictionary;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author: YaoHuaJun
 * @create: 2019-12-14 11:25
 **/
@Repository
public interface DictionaryMapper extends BaseMapper<Dictionary> {
}

service文件
接口

package com.rcyj.systemex.service;

import com.rcyj.common.base.service.BaseService;
import com.rcyj.systemex.entity.Dictionary;

import java.util.List;

/**
 * @author: YaoHuaJun
 * @create: 2019-12-14 11:25
 **/
public interface DictionaryService extends BaseService<Dictionary> {
}

实体类

package com.rcyj.systemex.service.impl;

import com.rcyj.common.base.service.impl.BaseServiceImpl;
import com.rcyj.systemex.entity.Dictionary;
import com.rcyj.systemex.mapper.DictionaryMapper;
import com.rcyj.systemex.service.DictionaryService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author: YaoHuaJun
 * @create: 2019-12-14 11:25
 **/
@Service
public class DictionaryServiceImpl extends BaseServiceImpl<DictionaryMapper, Dictionary> implements DictionaryService {
}

3、启动服务,用postman验证,正常访问
在这里插入图片描述

注意点:因为本次使用了阿里的druid连接池,这玩意和mybatis-plus有版本不容的问题,试了好多版本,最终才实验出来用哪一对比较合适,先分享给大家。

        <mybatis-plus.version>3.0.6</mybatis-plus.version>
        <druid.version>1.1.18</druid.version>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值