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