当前位置: 代码网 > it编程>编程语言>Java > 若依后端MyBatis改为MyBatis-Plus方式

若依后端MyBatis改为MyBatis-Plus方式

2024年11月16日 Java 我要评论
1.引入mybatis-plus依赖在总目录的pom.xml,导入依赖<mybatis-plus.version>3.4.3</mybatis-plus.version><

1.引入mybatis-plus依赖

在总目录的pom.xml,导入依赖

<mybatis-plus.version>3.4.3</mybatis-plus.version>

<!-- mybatis-plus 增强crud -->
<dependency>
<groupid>com.baomidou</groupid>
<artifactid>mybatis-plus-boot-starter</artifactid>
<version>${mybatis-plus.version}</version>
</dependency>

2.在ruoyi-common下的pom.xml添加mybatis-plus依赖

<!-- mybatis-plus 增强crud -->
<dependency>
    <groupid>com.baomidou</groupid>
    <artifactid>mybatis-plus-boot-starter</artifactid>
</dependency>

3.修改配置文件

ruoyi-admin下src\main\resources\application.yml,注释mybatis的配置,新增plus的配置,这段配置我是从若依官方拷贝过来的,如果跟你实际不一样就修改一下

# mybatis配置
#mybatis:
#  # 搜索指定包别名
#  typealiasespackage: com.spiceingredients.**.domain
#  # 配置mapper的扫描,找到所有的mapper.xml映射文件
#  mapperlocations: classpath*:mapper/**/*mapper.xml
#  # 加载全局的配置文件
#  configlocation: classpath:mybatis/mybatis-config.xml
# mybatis plus配置
mybatis-plus:
  # 搜索指定包别名
  typealiasespackage: com.spiceingredients.**.domain
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapperlocations: classpath*:mapper/**/*mapper.xml
  # 加载全局的配置文件
  configlocation: classpath:mybatis/mybatis-config.xml
  # mybatis-plus分页插件配置
  pagination:
    # 分页合理化参数,默认false
    reasonable: true
    # 支持通过 mapper 接口参数来传递分页参数
    supportmethodsarguments: true
    # 默认值为false,设置为true时,允许在参数中使用countsql
    params: count=countsql

4.重写mybatis配置文件

在framework中,找到mybatisconfig文件,然后删除,在刚删除的文件夹下,新建一个mybatisplus的java文件,复制已下内容到java文件中:

package com.spiceingredients.framework.config;
import com.baomidou.mybatisplus.annotation.dbtype;
import org.springframework.context.annotation.bean;
import org.springframework.context.annotation.configuration;
import org.springframework.transaction.annotation.enabletransactionmanagement;
import com.baomidou.mybatisplus.extension.plugins.mybatisplusinterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.paginationinnerinterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.optimisticlockerinnerinterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.blockattackinnerinterceptor;

/**
 * mybatis plus 配置
 *
 * @author ruoyi
 */
@enabletransactionmanagement(proxytargetclass = true)
@configuration
public class mybatisplusconfig
{
    @bean
    public mybatisplusinterceptor mybatisplusinterceptor()
    {
        mybatisplusinterceptor interceptor = new mybatisplusinterceptor();
        // 分页插件
        interceptor.addinnerinterceptor(paginationinnerinterceptor());
        // 乐观锁插件
        interceptor.addinnerinterceptor(optimisticlockerinnerinterceptor());
        // 阻断插件
        interceptor.addinnerinterceptor(blockattackinnerinterceptor());
        return interceptor;
    }

    /**
     * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html
     */
    public paginationinnerinterceptor paginationinnerinterceptor()
    {
        paginationinnerinterceptor paginationinnerinterceptor = new paginationinnerinterceptor();
        // 设置数据库类型为mysql
        paginationinnerinterceptor.setdbtype(dbtype.mysql);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        paginationinnerinterceptor.setmaxlimit(-1l);
        return paginationinnerinterceptor;
    }

    /**
     * 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html
     */
    public optimisticlockerinnerinterceptor optimisticlockerinnerinterceptor()
    {
        return new optimisticlockerinnerinterceptor();
    }

    /**
     * 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html
     */
    public blockattackinnerinterceptor blockattackinnerinterceptor()
    {
        return new blockattackinnerinterceptor();
    }
}

5.把代码生成修改为mybatis-plus版本

ruoyi-generator下src\main\resources\vm\java 文件夹下面,直接文件内容替换:

1. domain.java.vm

package ${packagename}.domain;

#foreach ($import in $importlist)
import ${import};
#end
import com.baomidou.mybatisplus.annotation.idtype;
import com.baomidou.mybatisplus.annotation.tableid;
import com.baomidou.mybatisplus.annotation.tablename;
import org.apache.commons.lang3.builder.tostringbuilder;
import org.apache.commons.lang3.builder.tostringstyle;
import com.rchuing.sis.common.annotation.excel;
import java.io.serializable;
import lombok.allargsconstructor;
import lombok.builder;
import lombok.data;
import lombok.noargsconstructor;
#if($table.crud || $table.sub)
import com.rchuing.sis.common.core.domain.baseentity;
#elseif($table.tree)
import com.fenghuang.common.core.domain.treeentity;
#end

/**
 * ${functionname}对象 ${tablename}
 *
 * @author ${author}
 * @date ${datetime}
 */
#if($table.crud || $table.sub)
    #set($entity="baseentity")
#elseif($table.tree)
    #set($entity="treeentity")
#end
@data
@builder
@allargsconstructor
@noargsconstructor
@tablename("${tablename}")
public class ${classname} implements serializable
        {
private static final long serialversionuid = 1l;

#foreach ($column in $columns)
    #if(!$table.issupercolumn($column.javafield))
    /** $column.columncomment */
        #if($column.list)
            #set($parentheseindex=$column.columncomment.indexof("("))
            #if($parentheseindex != -1)
                #set($comment=$column.columncomment.substring(0, $parentheseindex))
            #else
                #set($comment=$column.columncomment)
            #end
            #if($parentheseindex != -1)
            @excel(name = "${comment}", readconverterexp = "$column.readconverterexp()")
            @tablefield("`$column.columnname`")
            #elseif($column.javatype == 'date')
            @jsonformat(pattern = "yyyy-mm-dd")
            @excel(name = "${comment}", width = 30, dateformat = "yyyy-mm-dd")
            @tablefield("`$column.columnname`")
            #else
            @excel(name = "${comment}")
            @tablefield("`$column.columnname`")
            #end
        #end
        #if($column.ispk == 1)
        @tableid(type = idtype.auto)
        #end

    private $column.javatype $column.javafield;

    #end
#end


2. mapper.java.vm

package ${packagename}.mapper;

import java.util.list;
import com.baomidou.mybatisplus.core.mapper.basemapper;
import ${packagename}.domain.${classname};
#if($table.sub)
import ${packagename}.domain.${subclassname};
#end

/**
 * ${functionname}mapper接口
 *
 * @author ${author}
 * @date ${datetime}
 */
public interface ${classname}mapper extends basemapper<${classname}> {

}

3. service.java.vm

package ${packagename}.service;

import java.util.list;
import ${packagename}.domain.${classname};
import com.baomidou.mybatisplus.extension.service.iservice;

/**
 * ${functionname}service接口
 *
 * @author ${author}
 * @date ${datetime}
 */
public interface i${classname}service extends iservice<${classname}> {

}

4. serviceimpl.java.vm

package ${packagename}.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.serviceimpl;
import java.util.list;
    #foreach ($column in $columns)
        #if($column.javafield == 'createtime' || $column.javafield == 'updatetime')
        import com.rchuing.common.utils.dateutils;
            #break
        #end
    #end
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.service;
    #if($table.sub)
    import java.util.arraylist;
    import com.rchuing.common.utils.stringutils;
    import org.springframework.transaction.annotation.transactional;
    import ${packagename}.domain.${subclassname};
    #end
import ${packagename}.mapper.${classname}mapper;
import ${packagename}.domain.${classname};
import ${packagename}.service.i${classname}service;

/**
 * ${functionname}service业务层处理
 *
 * @author ${author}
 * @date ${datetime}
 */
@service
public class ${classname}serviceimpl extends serviceimpl<${classname}mapper, ${classname}> implements i${classname}service {

}

5.sub-domain.java.vm

package ${packagename}.domain;

    #foreach ($import in $subimportlist)
    import ${import};
    #end
import org.apache.commons.lang3.builder.tostringbuilder;
import org.apache.commons.lang3.builder.tostringstyle;
import com.rchuing.common.annotation.excel;
import com.rchuing.common.core.domain.baseentity;

/**
 * ${subtable.functionname}对象 ${subtablename}
 *
 * @author ${author}
 * @date ${datetime}
 */
public class ${subclassname} extends baseentity {
private static final long serialversionuid = 1l;

#foreach ($column in $subtable.columns)
    #if(!$table.issupercolumn($column.javafield))
    /** $column.columncomment */
        #if($column.list)
            #set($parentheseindex=$column.columncomment.indexof("("))
            #if($parentheseindex != -1)
                #set($comment=$column.columncomment.substring(0, $parentheseindex))
            #else
                #set($comment=$column.columncomment)
            #end
            #if($parentheseindex != -1)
            @excel(name = "${comment}", readconverterexp = "$column.readconverterexp()")
            #elseif($column.javatype == 'date')
            @jsonformat(pattern = "yyyy-mm-dd")
            @excel(name = "${comment}", width = 30, dateformat = "yyyy-mm-dd")
            #else
            @excel(name = "${comment}")
            #end
        #end
    private $column.javatype $column.javafield;

    #end
#end
#foreach ($column in $subtable.columns)
    #if(!$table.issupercolumn($column.javafield))
        #if($column.javafield.length() > 2 && $column.javafield.substring(1,2).matches("[a-z]"))
            #set($attrname=$column.javafield)
        #else
            #set($attrname=$column.javafield.substring(0,1).touppercase() + ${column.javafield.substring(1)})
        #end
    public void set${attrname}($column.javatype $column.javafield) {
            this.$column.javafield = $column.javafield;
            }

    public $column.javatype get${attrname}() {
            return $column.javafield;
            }
    #end
#end

@override
public string tostring() {
        return new tostringbuilder(this,tostringstyle.multi_line_style)
    #foreach ($column in $subtable.columns)
        #if($column.javafield.length() > 2 && $column.javafield.substring(1,2).matches("[a-z]"))
            #set($attrname=$column.javafield)
        #else
            #set($attrname=$column.javafield.substring(0,1).touppercase() + ${column.javafield.substring(1)})
        #end
            .append("${column.javafield}", get${attrname}())
    #end
        .tostring();
        }
        }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com