ruoyi 中mybatis改为mybatisPlus

仅作用笔记记录

ruoyi前后端分离

1.增加依赖

多模块增加在父pom中

与Springboot 2.5.15相符合


    com.baomidou
    mybatis-plus-boot-starter
    3.5.5

2.增加mybatisplus 配置信息 

ruoyi-admin的application.yml中

# Mybatis-plus配置
mybatis-plus:
  mapper-locations: classpath*:mybatis/**/*Mapper.xml
  type-aliases-package: com.ruoyi.project.**.domain
  global-config:
    db-config:
      id-type: auto
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3.注释掉MybatisConfig里面的Bean

系统会自动根据配置文件构建mybatisplus相关的Bean,所以这里也不需要修改成mybatis-plus的

4.加分页插件

多模块在ruoyi-framework下

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import java.util.Collections;

/**
 * mybatis-plus配置
 *
 * @author Mark [email protected]
 */
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {

    /**
     * 分页插件 3.5.X
     *
     * @author zhengkai.blog.csdn.net
     */
    @Bean
    public PaginationInnerInterceptor paginationInnerInterceptor() {
       PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor();
       // 设置最大单页限制数量,默认 500 条,-1 不受限制
       paginationInterceptor.setMaxLimit(-1L);
       paginationInterceptor.setDbType(DbType.MYSQL);
       // 开启 count 的 join 优化,只针对部分 left join
       paginationInterceptor.setOptimizeJoin(true);
       return paginationInterceptor;
    }

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
       MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
       mybatisPlusInterceptor.setInterceptors(Collections.singletonList(paginationInnerInterceptor()));
       return mybatisPlusInterceptor;
    }
}

mybatisPlus代码模板

代码模板在vm目录下  多模块在ruoyi-generatormu模块下

1.controller

package ${packageName}.controller;

import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import ${packageName}.domain.${ClassName};
import ${packageName}.service.I${ClassName}Service;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
#if($table.crud || $table.sub)
import com.ruoyi.framework.web.page.TableDataInfo;
#elseif($table.tree)
#end

/**
 * ${functionName}Controller
 * 
 * @date ${datetime}
 */
@RestController
@RequestMapping("/${moduleName}/${businessName}")
public class ${ClassName}Controller extends BaseController
{
    @Autowired
    private I${ClassName}Service ${className}Service;

    /**
     * 查询${functionName}列表
     */
    @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
    @GetMapping("/list")
#if($table.crud || $table.sub)
    public TableDataInfo list(${ClassName} ${className})
    {
        startPage();
        List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
        return getDataTable(list);
    }
#elseif($table.tree)
    public AjaxResult list(${ClassName} ${className})
    {
        List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
        return success(list);
    }
#end

    /**
     * 导出${functionName}列表
     */
    @PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')")
    @Log(title = "${functionName}", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ${ClassName} ${className})
    {
        List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
        ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class);
        util.exportExcel(response, list, "${functionName}数据");
    }

    /**
     * 获取${functionName}详细信息
     */
    @PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')")
    @PostMapping("/getInfo")
    public AjaxResult getInfo(@RequestParam("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) {
       return success(${className}Service.getById(${pkColumn.javaField}));
    }

    /**
     * 新增${functionName}
     */
    @PreAuthorize("@ss.hasPermi('${permissionPrefix}:add')")
    @Log(title = "${functionName}", businessType = BusinessType.INSERT)
    @PostMapping("/save")
    public AjaxResult add(@RequestBody ${ClassName} ${className}) {
       return toAjax(${className}Service.save(${className}));
    }

   /**
     * 修改${functionName}
     */
    @PreAuthorize("@ss.hasPermi('${permissionPrefix}:edit')")
    @Log(title = "${functionName}", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    public AjaxResult edit(@RequestBody ${ClassName} ${className}) {
       return toAjax(${className}Service.updateById(${className}));
    }

    /**
     * 删除${functionName}
     */
    @PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')")
    @Log(title = "${functionName}", businessType = BusinessType.DELETE)
    @DeleteMapping("/{${pkColumn.javaField}}")
    public AjaxResult remove(@PathVariable ${pkColumn.javaType} ${pkColumn.javaField})
    {
        return toAjax(${className}Service.removeById(${pkColumn.javaField}));
    }
}

 2.domain

package ${packageName}.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
#foreach ($import in $importList)
import ${import};
#end
import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonFormat;
#if($table.crud || $table.sub)
import com.baomidou.mybatisplus.annotation.TableField;

#elseif($table.tree)
import com.ruoyi.common.core.domain.TreeEntity;
#end

/**
 * ${functionName}对象 ${tableName}
 *
 * @date ${datetime}
 */
#if($table.crud || $table.sub)
    #set($Entity="BaseEntity")
#elseif($table.tree)
    #set($Entity="TreeEntity")
#end
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "${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}")
                #elseif($column.javaType == 'Date')
             @Excel(name = "${comment}", dateFormat = "yyyy-MM-dd HH:mm:ss")
                #else
             @Excel(name = "${comment}")
                #end
            #end
            #if($column.javaField == "id")
          @TableId(type = IdType.AUTO)
            #end
       private $column.javaType $column.javaField;
        #end
    #end

    #if($table.sub)
       /** $table.subTable.functionName信息 */
       @TableField(exist = false)
       private List<${subClassName}> ${subclassName}List;
    #end
    /**
         * 展示数量
         */
    //@JsonIgnore
    @TableField(exist = false)
    private Integer pageSize = 15;

    /**
     * 页码
     */
    //@JsonIgnore
    @TableField(exist = false)
    private Integer pageNum = 1;

    /**
     * 创建时间 - 开始
     */
    //@JsonIgnore
    @TableField(exist = false)
    private Long createTimeStart;

    /**
     * 创建时间 - 结束
     */
    //@JsonIgnore
    @TableField(exist = false)
    private Long createTimeEnd;
}

3.mapper 

package ${packageName}.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import ${packageName}.domain.${ClassName};
#if($table.sub)
import ${packageName}.domain.${subClassName};
#end

/**
 * ${functionName}Mapper接口
 *
 * @date ${datetime}
 */
@Mapper
public interface ${ClassName}Mapper extends BaseMapper<${ClassName}>
{
}

4.service

package ${packageName}.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import ${packageName}.domain.${ClassName};

/**
 * ${functionName}Service接口
 *
 * @date ${datetime}
 */
public interface I${ClassName}Service extends IService<${ClassName}> {

    /**
     * 查询${functionName}列表
     *
     * @param ${className} ${functionName}
     * @return ${functionName}集合
     */
    Page<${ClassName}> select${ClassName}List(${ClassName} ${className});

}

5.serviceImpl

package ${packageName}.service.impl;

import java.util.Date;
import java.util.List;

import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
    #if($table.sub)
    import java.util.ArrayList;

    import com.ruoyi.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业务层处理
 * @date ${datetime}
 */
@Service
public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service {
    

    /**
     * 查询${functionName}列表
     *
     *
     * @param ${className} ${functionName}
     * @return ${functionName}
     */
    @Override
    public Page<${ClassName}> select${ClassName}List(${ClassName} ${className}) {
       // 创建分页对象
       Page<${ClassName}> page = new Page<${ClassName}>(${className}.getPageNum(), ${className}.getPageSize());
       // 查询条件
       LambdaQueryWrapper<${ClassName}> wrapper = Wrappers.lambdaQuery(${ClassName}. class);
       //  查询条件
       {
          // 添加时间查询
          if (null != ${className}.getCreateTimeStart() && null != ${className}.getCreateTimeEnd()){
          wrapper.between(${ClassName}::getCreatedAt, new Date(${className}.getCreateTimeStart()),
          new Date(${className}.getCreateTimeEnd()));
       }
            #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
                #if("Deleted" != ${AttrName} && "CreateTime" != ${AttrName}&& "UpdateTime" != ${AttrName})
                wrapper.eq(ObjectUtil.isNotEmpty( ${className}.get${AttrName}()),${ClassName}::
                get${AttrName}, ${className}.get${AttrName}());
                #end
            #end
       }
       return baseMapper.selectPage(page, wrapper);
    }
}

你可能感兴趣的:(mybatis,java,spring,boot)