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();
}
}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论