当前位置:首页 » 《休闲阅读》 » 正文

若依 MyBatis改为MyBatis-Plus

18 人参与  2024年10月07日 12:40  分类 : 《休闲阅读》  评论

点击全文阅读


目录

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】的总目录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文件中:

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)@Configurationpublic 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};#endimport 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@Overridepublic 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#endimport 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};#endimport ${packageName}.mapper.${ClassName}Mapper;import ${packageName}.domain.${ClassName};import ${packageName}.service.I${ClassName}Service;/** * ${functionName}Service业务层处理 * * @author ${author} * @date ${datetime} */@Servicepublic 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};#endimport 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();    }}


点击全文阅读


本文链接:http://zhangshiyu.com/post/168527.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1