若依 MyBatis改為MyBatis-Plus的實現(xiàn)步驟
主要內(nèi)容:升級成mybatis-plus,代碼生成也是mybatis-plus版本
跟著我一步一步來,就可完成升級!
檢查:啟動程序,先保證若依能啟動
第一步:添加依賴
這里需要在兩個地方添加,一個是最外面的父工程的pom.xml,一個是ruoyi-common的pom.xml。
最外面的父工程的pom.xml:
1.添加版本信息
代碼: <!-- mybatis-plus 版本--> <mybatis-pluc.version>3.4.2</mybatis-pluc.version>
2.添加mybatis-plus依賴
代碼:
<!-- mybatis-plus 增強CRUD --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency>
ruoyi-common的pom.xml:
1.直接繼承父工程的依賴
第一步驗證:
admin的包中的application.yml文件有mybatis-plus的提示,說明依賴弄好啦!
第二步:修改application.yml文件
1.刪除舊的mybatis配置
2.寫入新配置
代碼:
# MyBatis Plus配置 mybatis-plus: # 搜索指定包別名 根據(jù)自己的項目來 typeAliasesPackage: com.rchuing.sis.**.domain # 配置mapper的掃描,找到所有的mapper.xml映射文件 mapperLocations: classpath*:mapper/**/*Mapper.xml # 加載全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml global-config: enable-sql-runner: true db-config: id-type: auto
第三步:重寫mybatis配置文件
1.在framework中,找到MybatisConfig文件,然后刪除。
2.在剛刪除的文件夾下,新建一個MybatisPlus的java文件
復(fù)制已下內(nèi)容到j(luò)ava文件中:
/** * 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(); } }
如圖:
到這里Mybatis-plus就升級完成了。但代碼生成里面還是以前mybatis的,這里也需要升級一下,方便代碼生成。
第四步:把代碼生成修改為mybatis-plus版本
1.在generator找到vm中的java文件夾
2.修改里面內(nèi)容:這里直接上代碼了,找到對應(yīng)的直接復(fù)制粘貼就行。
2.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; #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 @TableName(resultMap = "${packageName}.mapper.${ClassName}Mapper.${ClassName}Result") public class ${ClassName} extends ${Entity} { 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()") #elseif($column.javaType == 'Date') @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") #else @Excel(name = "${comment}") #end #end #if($column.isPk == 1) @TableId(value = "$column.columnName",type = IdType.AUTO) #end private $column.javaType $column.javaField; #end #end #if($table.sub) /** $table.subTable.functionName信息 */ private List<${subClassName}> ${subclassName}List; #end #foreach ($column in $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 #if($table.sub) public List<${subClassName}> get${subClassName}List() { return ${subclassName}List; } public void set${subClassName}List(List<${subClassName}> ${subclassName}List) { this.${subclassName}List = ${subclassName}List; } #end @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) #foreach ($column in $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 #if($table.sub) .append("${subclassName}List", get${subClassName}List()) #end .toString(); } }
2.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}> { /** * 查詢${functionName} * * @param ${pkColumn.javaField} ${functionName}主鍵 * @return ${functionName} */ public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); /** * 查詢${functionName}列表 * * @param ${className} ${functionName} * @return ${functionName}集合 */ public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); /** * 新增${functionName} * * @param ${className} ${functionName} * @return 結(jié)果 */ public int insert${ClassName}(${ClassName} ${className}); /** * 修改${functionName} * * @param ${className} ${functionName} * @return 結(jié)果 */ public int update${ClassName}(${ClassName} ${className}); /** * 刪除${functionName} * * @param ${pkColumn.javaField} ${functionName}主鍵 * @return 結(jié)果 */ public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); /** * 批量刪除${functionName} * * @param ${pkColumn.javaField}s 需要刪除的數(shù)據(jù)主鍵集合 * @return 結(jié)果 */ public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); #if($table.sub) /** * 批量刪除${subTable.functionName} * * @param ${pkColumn.javaField}s 需要刪除的數(shù)據(jù)主鍵集合 * @return 結(jié)果 */ public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); /** * 批量新增${subTable.functionName} * * @param ${subclassName}List ${subTable.functionName}列表 * @return 結(jié)果 */ public int batch${subClassName}(List<${subClassName}> ${subclassName}List); /** * 通過${functionName}主鍵刪除${subTable.functionName}信息 * * @param ${pkColumn.javaField} ${functionName}ID * @return 結(jié)果 */ public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField}); #end }
2.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}> { /** * 查詢${functionName} * * @param ${pkColumn.javaField} ${functionName}主鍵 * @return ${functionName} */ public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); /** * 查詢${functionName}列表 * * @param ${className} ${functionName} * @return ${functionName}集合 */ public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); /** * 新增${functionName} * * @param ${className} ${functionName} * @return 結(jié)果 */ public int insert${ClassName}(${ClassName} ${className}); /** * 修改${functionName} * * @param ${className} ${functionName} * @return 結(jié)果 */ public int update${ClassName}(${ClassName} ${className}); /** * 批量刪除${functionName} * * @param ${pkColumn.javaField}s 需要刪除的${functionName}主鍵集合 * @return 結(jié)果 */ public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); /** * 刪除${functionName}信息 * * @param ${pkColumn.javaField} ${functionName}主鍵 * @return 結(jié)果 */ public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); }
2.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 { @Autowired private ${ClassName}Mapper ${className}Mapper; /** * 查詢${functionName} * * @param ${pkColumn.javaField} ${functionName}主鍵 * @return ${functionName} */ @Override public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) { return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); } /** * 查詢${functionName}列表 * * @param ${className} ${functionName} * @return ${functionName} */ @Override public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) { return ${className}Mapper.select${ClassName}List(${className}); } /** * 新增${functionName} * * @param ${className} ${functionName} * @return 結(jié)果 */ #if($table.sub) @Transactional #end @Override public int insert${ClassName}(${ClassName} ${className}) { #foreach ($column in $columns) #if($column.javaField == 'createTime') ${className}.setCreateTime(DateUtils.getNowDate()); #end #end #if($table.sub) int rows = ${className}Mapper.insert${ClassName}(${className}); insert${subClassName}(${className}); return rows; #else return ${className}Mapper.insert${ClassName}(${className}); #end } /** * 修改${functionName} * * @param ${className} ${functionName} * @return 結(jié)果 */ #if($table.sub) @Transactional #end @Override public int update${ClassName}(${ClassName} ${className}) { #foreach ($column in $columns) #if($column.javaField == 'updateTime') ${className}.setUpdateTime(DateUtils.getNowDate()); #end #end #if($table.sub) ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}()); insert${subClassName}(${className}); #end return ${className}Mapper.update${ClassName}(${className}); } /** * 批量刪除${functionName} * * @param ${pkColumn.javaField}s 需要刪除的${functionName}主鍵 * @return 結(jié)果 */ #if($table.sub) @Transactional #end @Override public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s) { #if($table.sub) ${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s); #end return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s); } /** * 刪除${functionName}信息 * * @param ${pkColumn.javaField} ${functionName}主鍵 * @return 結(jié)果 */ #if($table.sub) @Transactional #end @Override public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) { #if($table.sub) ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField}); #end return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); } #if($table.sub) /** * 新增${subTable.functionName}信息 * * @param ${className} ${functionName}對象 */ public void insert${subClassName}(${ClassName} ${className}) { List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List(); ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}(); if (StringUtils.isNotNull(${subclassName}List)) { List<${subClassName}> list = new ArrayList<${subClassName}>(); for (${subClassName} ${subclassName} : ${subclassName}List) { ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField}); list.add(${subclassName}); } if (list.size() > 0) { ${className}Mapper.batch${subClassName}(list); } } } #end }
2.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(); } }
到這里就升級完成。
下面進行測試:
1.
2.
3.如果看到mybatis的東西,說明升級成功!
注意:
1.這里可能有些包的路徑不對,把爆紅的包刪除,重新導(dǎo)入就可!
2.因為實際項目路徑不同,這里可能需要手動修改!
3.在BaseEntity類中
到此這篇關(guān)于若依 MyBatis改為MyBatis-Plus的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)若依 MyBatis改為MyBatis-Plus內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot部署到Tomcat過程中遇到的問題匯總
這篇文章主要給大家分享了關(guān)于Spring Boot部署到Tomcat過程中遇到的一些問題,文中將解決的方法介紹非常詳細,對同樣遇到這個問題的朋友具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-03-03Mybatis注解方式操作Oracle數(shù)據(jù)庫詳解
這篇文章主要介紹了Mybatis注解方式操作Oracle數(shù)據(jù)庫詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11Mybatis-Plus insertBatch執(zhí)行緩慢的原因查詢
這篇文章主要介紹了Mybatis-Plus insertBatch執(zhí)行緩慢的原因查詢,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11