若依-Vue 单体版本 更换mybatisPlus
1、单体模块在pom.xml ; 多模块版本在ruoyi-common\pom.xml、模块添加整合依赖
<!-- mybatis-plus 增强CRUD -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
2、单模块在修改主题的application.yml ; 多模块在ruoyi-admin文件application.yml,修改mybatis配置为mybatis-plus
# MyBatis Plus配置
mybatis-plus:
type-aliases-package: net.nachuan.doukuai.project.**.domain
mapper-locations: classpath*:mybatis/**/*Mapper.xml
config-location: classpath:mybatis/mybatis-config.xml
3、添加Mybatis Plus配置MybatisPlusConfig.java。 PS:原来的MyBatisConfig.java需要删除掉
package net.nachuan.doukuai.framework.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
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;
/**
* Mybatis Plus 配置
*
* @author LiuShuKu
*/
@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();
}
}
代码生成模版
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接口
*
* @author LiuShuKu
* @date ${datetime}
*/
@Mapper
public interface ${ClassName}Mapper extends BaseMapper<${ClassName}> {
}
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接口
*
* @author LiuShuKu
* @date ${datetime}
*/
public interface I${ClassName}Service extends IService<${ClassName}> {
/**
* 查询${functionName}列表
*
* @param ${className} ${functionName}
* @return ${functionName}集合
*/
Page<${ClassName}> select${ClassName}List(${ClassName} ${className});
}
Impl层
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 net.nachuan.doukuai.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 LiuShuKu
* @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}.getPageNumber(), ${className}.getPageSize());
// 查询条件
LambdaQueryWrapper<${ClassName}> wrapper = Wrappers.lambdaQuery(${ClassName}. class);
// 查询条件
{
// 添加时间查询
Date[] timeParam = ${className}.getTimeParam();
if (null != timeParam) {
wrapper.between(${ClassName}::getCreateTime, timeParam[0], timeParam[1]);
}
#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);
}
}
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 org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import net.nachuan.doukuai.framework.aspectj.lang.annotation.Excel;
#if($table.crud || $table.sub)
import com.baomidou.mybatisplus.annotation.TableField;
import net.nachuan.doukuai.common.core.domain.BaseEntity;
#elseif($table.tree)
import net.nachuan.doukuai.common.core.domain.TreeEntity;
#end
/**
* ${functionName}对象 ${tableName}
*
* @author LiuShuKu
* @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} 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 HH:mm:ss")
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
#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
}
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 net.nachuan.doukuai.framework.aspectj.lang.annotation.Log;
import net.nachuan.doukuai.framework.aspectj.lang.enums.BusinessType;
import ${packageName}.domain.${ClassName};
import ${packageName}.service.I${ClassName}Service;
import net.nachuan.doukuai.framework.web.controller.BaseController;
import net.nachuan.doukuai.framework.web.domain.AjaxResult;
import net.nachuan.doukuai.common.utils.poi.ExcelUtil;
#if($table.crud || $table.sub)
import net.nachuan.doukuai.framework.web.page.TableDataInfo;
#elseif($table.tree)
#end
/**
* ${functionName}Controller
*
* @author ${author}
* @date ${datetime}
*/
@RestController
@RequestMapping("/${moduleName}/${businessName}")
public class ${ClassName}Controller extends BaseController
{
@Autowired
private I${ClassName}Service ${className}Service;
}
若依-Vue 单体版本 更换mybatisPlus的更多相关文章
- vue 构建版本 选择
1.vue构建版本 vue构建版本分为:UMD.CommonJS和ES Module 三种. https://cn.vuejs.org/v2/guide/installation.html 区别: 所 ...
- 错误记录:vue跟vue编译器版本不一致
错误如下: error in ./src/Utils.vue Module build failed: Error: Vue packages version mismatch: - vue@ - v ...
- Vue踩坑第一步,安装Vue最新版本
学习vue第一步肯定是安装vue-cli,那么肯定想去搜下如何安装vue-cli呢? 网上搜到的结果大都是: npm i vue-cli -g 输入vue -V发现: 输入node -v发现: 自己明 ...
- JLINK驱动版本更换
https://www.segger.com/downloads/jlink/JLink_Windows_V644b.exe 官网版本 Jlink的版本目录C:\Keil_v5\ARM\Segger\ ...
- JDK版本更换后编译android系统出错
一:javac: 目标发行版 1.5 与默认的源发行版 1.7 冲突 1.设置jdk环境变量 编译android源码只支持jdk 1.6,所以如果需要编译源码必须下载jdk 1.6,不能下载最新的jd ...
- JDK版本更换,Eclipse中所有的项目报错
我将JDK10切换成JDK8版本以后,原先在eclipse中写的项目全部都报错了.解决方案如下: 1.设置eclipse中的JDK版本和JRE环境:window-preference-java-Com ...
- 解决vue低版本安卓手机兼容性问题
低版本的安卓手机可能会白屏,是由新特性不支持引起的 解决代码es6新特性兼容问题 1,npm 安装 npm install babel-polyfill npm install es6-promise ...
- nw打包vue项目exe更换图标
web项目用nw打包好了之后发现没办法更换桌面显示图标问题,找了一下发现大多推荐Resource进行最后更换,试了第一次怎么也不管用,电脑重启了一下就行了...... 首先下载安装好了Resource ...
- 【实验】VUE依赖版本,遇到就看这里
https://www.cnblogs.com/luomanman/p/15435422.html
- debian7 更换GCC版本
最近在编译qt,之前用的是debian6,gcc版本是gcc-4.4,当使用debian7时,编译遇到了很多跟debian6不一样的问题,debian7的默认gcc使用的是gcc-4.7,可能是编译器 ...
随机推荐
- 张高兴的 Raspberry Pi AI 开发指南:(二)使用 Python 进行目标检测
目录 Python 环境配置 实现 USB 摄像头的目标检测 参考 在上一篇博客中,探讨了使用 rpicam-apps 通过 JSON 文件配置并运行目标检测示例程序.虽然这种方法可以实现有效的检测, ...
- vue3 在给路由跳转增加动画之后,跳转时页面会出现上下抖动的问题
这个问题需要分两个步骤解决: 抖动的页面有多个多根节点 增加离开过渡的css样式 v-leave-to: {display: none} 解决步骤1 (抖动的页面有多个多根节点) 我在为路由跳转增加了 ...
- JavaScript 的 Mixin 问题
JavaScript 从 ES6 开始支持 class 了, 如何在现在的 class 上实现 mixin 呢? 很多人推荐这种搞法 Object.assign(MyClass.prototype, ...
- 利用GmSSL制作SM2国密证书
Part 0前言 GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法.SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密 ...
- pmml(模型标准化)
PMML简介PMML全称预言模型标记模型(Predictive Model Markup Language),以XML 为载体呈现数据挖掘模型.PMML 允许您在不同的应用程序之间轻松共享预测分析模型 ...
- Qt/C++地图雷达扫描/动态扇形区域/标记线实时移动/轮船货轮动态轨迹/雷达模拟/跟随地图缩放
一.前言说明 地图雷达扫描的需求场景也不少,很多人的做法是直接搞个覆盖层widget,在widget上绘制雷达,优缺点很明显,优点是性能高,毕竟直接在widget上绘制性能明显比js中绘制要高,缺点是 ...
- Qt/C++音视频开发67-保存裸流加入sps/pps信息/支持264/265裸流/转码保存/拉流推流
一.前言 音视频组件除了支持保存MP4文件外,同时还支持保存裸流即264/265文件,以及解码后最原始的yuv文件.在实际使用过程中,会发现部分视频文件保存的裸流文件,并不能直接用播放器播放,查阅资料 ...
- Qt编写地图综合应用28-闪烁点图
一.前言 Qt除了内置了各种UI组件以外,还直接集成了浏览器控件,注意哦这可是跨平台的浏览器控件哦,在5.6版本以前集成的是webkit,以后集成的是webengine,使得程序的灵活性拓展性大大增强 ...
- [转]boost使用之编译库及遇到的问题
最近因为在学习网络编程相关的东西,准备学习一下boost,毕竟原生的网络编程太麻烦.看了一下其实windows下想使用起来很简单,就是下载库,然后运行脚本,然后运行exe库就出来.在把头文件和库的目录 ...
- Intellij IDEA部署Web项目到tomcat时提示:Error:Cannot build Artifact ':war exploded' because it is included into a circul
在Idea中使用Maven创建父子工程,第一个Model的那个项目可以很好的运行,在创建一个Model运行时报这个错.原因是tomcat部署了多个Web项目,可能最开始是两个项目的配置文件混用用,最后 ...