若依 MyBatis改为MyBatis-Plus

老衲有点帅 2024-10-15 09:35:02 阅读 55

目录

1.引入MyBatis-Plus依赖

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

3.修改配置文件

4.重写mybatis配置文件

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

1. domain.java.vm

2. mapper.java.vm

3. service.java.vm

4. serviceimpl.java.vm

5.sub-domain.java.vm


1.引入MyBatis-Plus依赖

在若依项目【我的若依框架版本号为:3.8.7】的<code>总目录pom.xml文件中,引入MyBatis-Plus相关依赖:

代码如下,根据上图将两块代码放入对应位置:

<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 Plus配置

mybatis-plus:

# 搜索指定包别名

typeAliasesPackage: com.ruoyi.**.domain

# 配置mapper的扫描,找到所有的mapper.xml映射文件

mapperLocations: classpath*:mapper/**/*Mapper.xml

# 加载全局的配置文件

configLocation: classpath:mybatis/mybatis-config.xml

4.重写mybatis配置文件

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

<code>package com.ruoyi.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;

#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")code>

#elseif($table.tree)

#set($Entity="TreeEntity")code>

#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. 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 结果

*/

public int insert${ClassName}(${ClassName} ${className});

/**

* 修改${functionName}

*

* @param ${className} ${functionName}

* @return 结果

*/

public int update${ClassName}(${ClassName} ${className});

/**

* 删除${functionName}

*

* @param ${pkColumn.javaField} ${functionName}主键

* @return 结果

*/

public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});

/**

* 批量删除${functionName}

*

* @param ${pkColumn.javaField}s 需要删除的数据主键集合

* @return 结果

*/

public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);

#if($table.sub)

/**

* 批量删除${subTable.functionName}

*

* @param ${pkColumn.javaField}s 需要删除的数据主键集合

* @return 结果

*/

public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);

/**

* 批量新增${subTable.functionName}

*

* @param ${subclassName}List ${subTable.functionName}列表

* @return 结果

*/

public int batch${subClassName}(List<${subClassName}> ${subclassName}List);

/**

* 通过${functionName}主键删除${subTable.functionName}信息

*

* @param ${pkColumn.javaField} ${functionName}ID

* @return 结果

*/

public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});

#end

}

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 结果

*/

public int insert${ClassName}(${ClassName} ${className});

/**

* 修改${functionName}

*

* @param ${className} ${functionName}

* @return 结果

*/

public int update${ClassName}(${ClassName} ${className});

/**

* 批量删除${functionName}

*

* @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合

* @return 结果

*/

public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);

/**

* 删除${functionName}信息

*

* @param ${pkColumn.javaField} ${functionName}主键

* @return 结果

*/

public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});

}

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 {

@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 结果

*/

#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 结果

*/

#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 结果

*/

#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 结果

*/

#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

}

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();

}

}



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。