若依后端MyBatis改為MyBatis-Plus方式
1.引入MyBatis-Plus依賴
在總目錄的pom.xml,導(dǎo)入依賴
<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: # 分頁合理化參數(shù),默認false reasonable: true # 支持通過 Mapper 接口參數(shù)來傳遞分頁參數(shù) supportMethodsArguments: true # 默認值為false,設(shè)置為true時,允許在參數(shù)中使用countSql params: count=countSql
4.重寫mybatis配置文件
在framework中,找到MybatisConfig文件,然后刪除,在剛刪除的文件夾下,新建一個MybatisPlus的java文件,復(fù)制已下內(nèi)容到j(luò)ava文件中:
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; } /** * 分頁插件,自動識別數(shù)據(jù)庫類型 https://baomidou.com/guide/interceptor-pagination.html */ public PaginationInnerInterceptor paginationInnerInterceptor() { PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); // 設(shè)置數(shù)據(jù)庫類型為mysql paginationInnerInterceptor.setDbType(DbType.MYSQL); // 設(shè)置最大單頁限制數(shù)量,默認 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 文件夾下面,直接文件內(nèi)容替換:
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業(yè)務(wù)層處理 * * @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(); } }
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot多數(shù)據(jù)庫連接(mysql+oracle)的實現(xiàn)
這篇文章主要介紹了SpringBoot多數(shù)據(jù)庫連接(mysql+oracle)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03SpringCloud使用Feign實現(xiàn)服務(wù)調(diào)用
這篇文章主要為大家詳細介紹了SpringCloud使用Feign實現(xiàn)服務(wù)調(diào)用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04Java注解@Transactional事務(wù)類內(nèi)調(diào)用不生效問題及解決辦法
這篇文章主要介紹了Java注解@Transactional事務(wù)類內(nèi)調(diào)用不生效問題及解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05詳解SpringBoot定制@ResponseBody注解返回的Json格式
這篇文章主要介紹了詳解SpringBoot定制@ResponseBody注解返回的Json格式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11用Java產(chǎn)生100個1-150間不重復(fù)數(shù)字
這篇文章主要介紹了用Java產(chǎn)生100個1-150間不重復(fù)數(shù)字,需要的朋友可以參考下2017-02-02