若依mybatis升级mybatis-plus,其他也适用

news2024/11/27 4:27:49

若依mybatis升级mybatis-plus,其他也适用

本文档记录若依mybatis升级plus,其他也类似

文章目录

  • 若依mybatis升级mybatis-plus,其他也适用
    • 第一步 修改ruoyi-common的pom.xml
    • 第二步 修改ruoyi-admin的application.yml
    • 第三步 修改ruoyi-framework的MyBatisConfig.java
    • 开始测试
      • 1. 修改ruoyi-system 的 ISysConfigService,加个继承
      • 2. 修改ruoyi-system 的 SysConfigServiceImpl,加个继承
      • 3. 修改ruoyi-system 的 SysConfigMapper,加个继承
      • 4. 修改ruoyi-system 的 SysConfig,加个 @TableId(type = IdType.AUTO)
      • 5. 要么把SysConfig的 extends BaseEntity 去掉 要么给BaseEntity加东西 @TableField(exist = false)
      • 6. 修改ruoyi-admin的SysConfigController
      • 启动项目进行测试

第一步 修改ruoyi-common的pom.xml

添加如下依赖

前两个mybatis-plus的,第三个lombok 实体中用@Data 代替get/set,get/set太low了

<!-- mybatis-plus-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-annotation</artifactId>
    <version>3.5.1</version>
</dependency>
<!--mybatis plus extension,包含了mybatis plus core-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-extension</artifactId>
    <version>3.5.1</version>
</dependency>
<!-- lombok  -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

第二步 修改ruoyi-admin的application.yml

1. 注释mybatis配置

# MyBatis配置
#mybatis:
#    # 搜索指定包别名
#    typeAliasesPackage: com.ruoyi.**.domain
#    # 配置mapper的扫描,找到所有的mapper.xml映射文件
#    mapperLocations: classpath*:mapper/**/*Mapper.xml
#    # 加载全局的配置文件
#    configLocation: classpath:mybatis/mybatis-config.xml

2. 添加mybatis-plus配置

前三个就是把上面的mybatis配置复制了一下,因为ruoyi-framework的MyBatisConfig.java中用到了前三个,其实可以改名,但是比较懒就复制了一下,下面第三步说

mybatis-plus:
  # 搜索指定包别名
  typeAliasesPackage: com.ruoyi.**.domain
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapperLocations: classpath*:mapper/**/*Mapper.xml
  # 加载全局的配置文件
  configLocation: classpath:mybatis/mybatis-config.xml
  
  
  type-aliases-package: com.ruoyi.**.domain
  mapper-locations: classpath*:mapper/**/*Mapper.xml
  configuration:
    cache-enabled: true
    use-generated-keys: true
    default-executor-type: simple
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl

附上看到的一个完整的配置解释做个记录,不用加到配置里

#mybatis-plus:
#  # 对应的 XML 文件位置
#  mapperLocations: classpath*:mapper/**/*Mapper.xml
#  # 实体扫描,多个package用逗号或者分号分隔
#  typeAliasesPackage: com.ruoyi.**.domain
#  # 针对 typeAliasesPackage,如果配置了该属性,则仅仅会扫描路径下以该类作为父类的域对象
#  #typeAliasesSuperType: Class<?>
#  # 如果配置了该属性,SqlSessionFactoryBean 会把该包下面的类注册为对应的 TypeHandler
#  #typeHandlersPackage: null
#  # 如果配置了该属性,会将路径下的枚举类进行注入,让实体类字段能够简单快捷的使用枚举属性
#  #typeEnumsPackage: null
#  # 启动时是否检查 MyBatis XML 文件的存在,默认不检查
#  checkConfigLocation: false
#  # 通过该属性可指定 MyBatis 的执行器,MyBatis 的执行器总共有三种:
#  # SIMPLE:该执行器类型不做特殊的事情,为每个语句的执行创建一个新的预处理语句(PreparedStatement)
#  # REUSE:该执行器类型会复用预处理语句(PreparedStatement)
#  # BATCH:该执行器类型会批量执行所有的更新语句
#  executorType: SIMPLE
#  # 指定外部化 MyBatis Properties 配置,通过该配置可以抽离配置,实现不同环境的配置部署
#  configurationProperties: null
#  configuration:
#    # 自动驼峰命名规则(camel case)映射
#    # 如果您的数据库命名符合规则无需使用 @TableField 注解指定数据库字段名
#    mapUnderscoreToCamelCase: true
#    # 默认枚举处理类,如果配置了该属性,枚举将统一使用指定处理器进行处理
#    # org.apache.ibatis.type.EnumTypeHandler : 存储枚举的名称
#    # org.apache.ibatis.type.EnumOrdinalTypeHandler : 存储枚举的索引
#    # com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler : 枚举类需要实现IEnum接口或字段标记@EnumValue注解.
#    defaultEnumTypeHandler: org.apache.ibatis.type.EnumTypeHandler
#    # 当设置为 true 的时候,懒加载的对象可能被任何懒属性全部加载,否则,每个属性都按需加载。需要和 lazyLoadingEnabled 一起使用。
#    aggressiveLazyLoading: true
#    # MyBatis 自动映射策略
#    # NONE:不启用自动映射
#    # PARTIAL:只对非嵌套的 resultMap 进行自动映射
#    # FULL:对所有的 resultMap 都进行自动映射
#    autoMappingBehavior: PARTIAL
#    # MyBatis 自动映射时未知列或未知属性处理策
#    # NONE:不做任何处理 (默认值)
#    # WARNING:以日志的形式打印相关警告信息
#    # FAILING:当作映射失败处理,并抛出异常和详细信息
#    autoMappingUnknownColumnBehavior: NONE
#    # Mybatis一级缓存,默认为 SESSION
#    # SESSION session级别缓存,同一个session相同查询语句不会再次查询数据库
#    # STATEMENT 关闭一级缓存
#    localCacheScope: SESSION
#    # 开启Mybatis二级缓存,默认为 true
#    cacheEnabled: true
#  global-config:
#    # 是否打印 Logo banner
#    banner: true
#    # 是否初始化 SqlRunner
#    enableSqlRunner: false
#    dbConfig:
#      # 主键类型
#      # AUTO 数据库ID自增
#      # NONE 空
#      # INPUT 用户输入ID
#      # ASSIGN_ID 全局唯一ID
#      # ASSIGN_UUID 全局唯一ID UUID
#      idType: AUTO
#      # 表名前缀
#      tablePrefix: null
#      # 字段 format,例: %s,(对主键无效)
#      columnFormat: null
#      # 表名是否使用驼峰转下划线命名,只对表名生效
#      tableUnderline: true
#      # 大写命名,对表名和字段名均生效
#      capitalMode: false
#      # 全局的entity的逻辑删除字段属性名
#      logicDeleteField: null
#      # 逻辑已删除值
#      logicDeleteValue: 2
#      # 逻辑未删除值
#      logicNotDeleteValue: 0
#      # 字段验证策略之 insert,在 insert 的时候的字段验证策略
#      # IGNORED 忽略判断
#      # NOT_NULL 非NULL判断
#      # NOT_EMPTY 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断)
#      # DEFAULT 默认的,一般只用于注解里
#      # NEVER 不加入 SQL
#      insertStrategy: NOT_NULL
#      # 字段验证策略之 update,在 update 的时候的字段验证策略
#      updateStrategy: NOT_NULL
#      # 字段验证策略之 select,在 select 的时候的字段验证策略既 wrapper 根据内部 entity 生成的 where 条件
#      selectStrategy: NOT_NULL

第三步 修改ruoyi-framework的MyBatisConfig.java

  1. 配置指向修改下

  2. 重点:SalSessionFactory不要使用原生的,请使用MybatisSglSessionFactory

    这个一定要改要不会报错
    在这里插入图片描述
    到这里mybatis-plus就配置的差不多了,下面就举个使用例子

开始测试

可以直接第五步开始,也可以一步一步看

1. 修改ruoyi-system 的 ISysConfigService,加个继承

public interface ISysConfigService extends IService<SysConfig>

2. 修改ruoyi-system 的 SysConfigServiceImpl,加个继承

public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements ISysConfigService

3. 修改ruoyi-system 的 SysConfigMapper,加个继承

public interface SysConfigMapper extends BaseMapper<SysConfig>

4. 修改ruoyi-system 的 SysConfig,加个 @TableId(type = IdType.AUTO)

@TableId(type = IdType.AUTO)
private Long configId;

5. 要么把SysConfig的 extends BaseEntity 去掉 要么给BaseEntity加东西 @TableField(exist = false)

该说不说,ruoyi结构太丑了,但是开源这点最优秀

都加上注解

/** 搜索值 */
    @JsonIgnore
    @TableField(exist = false)
    private String searchValue;

    /** 创建者 */
    @TableField(exist = false)
    private String createBy;

    /** 创建时间 */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新者 */
    @TableField(exist = false)
    private String updateBy;

    /** 更新时间 */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /** 备注 */
    @TableField(exist = false)
    private String remark;

    /** 请求参数 */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @TableField(exist = false)
    private Map<String, Object> params;

6. 修改ruoyi-admin的SysConfigController

创建一个调用baseMapper的数据进行测试

/**
 * 获取参数配置列表
 */
@PreAuthorize("@ss.hasPermi('system:config:list')")
@GetMapping("/listss")
public TableDataInfo lissst(SysConfig config)
{
    startPage();
    List<SysConfig> list = configService.list();
    return getDataTable(list);
}

启动项目进行测试

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/153587.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一、计算机系统概论

文章目录一、计算机系统简介1.计算机软硬件概念2.计算机系统的层次结构&#xff08;1&#xff09;现代计算机&#xff08;2&#xff09;发展&#xff08;3&#xff09;软硬件分布3.计算机组成和计算机体系结构二、计算机的基本组成1.冯诺依曼计算器2.计算机硬件框图3.计算机工作…

android架构拆分方案-编译相关方案与技术

接上文https://blog.csdn.net/dongyi1988/article/details/128617738直接拆分那么在代码和做包过程中&#xff0c;需要用到分仓&#xff0c;super.img、boot、OTA升级包的拆分与组合&#xff0c;vendor与system相关依赖处理&#xff0c;开机验证链还必须给镜像签名。代码管理定…

VisualODX——ODX数据自动转换工具

在创建ODX数据库的过程中&#xff0c;我们需要录入大量的数据以及应对多种数据格式。这不仅费时费力&#xff0c;而且还需要很高的人力成本&#xff0c;并且其错误率也高&#xff0c;从而导致了效率低下、开发速度缓慢。基于多年的汽车行业诊断经验&#xff0c;Softing开发了Vi…

基于微信小程序的课程分享平台小程序

文末联系获取源码 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏览器…

xv6-lab3: page table

文章目录1.speed up system call2. print page3. Detecting which pages have been accessedwhere is page table?function of page table?how to get arguments from user to kernel? – reference:https://stackoverflow.com/questions/46870509/how-to-pass-a-value-into…

风速记录仪大屏幕液晶显示全中文操作菜单操作简单

风速记录仪功能特点◆本机体积小巧美观&#xff0c;大屏幕液晶显示&#xff0c;全中文操作菜单&#xff0c;操作简单&#xff0c;性能可靠&#xff0c;记录间隔可根据要求从1分至24小时任意设置。&#xff08;但由于存储器空间有限&#xff0c;设置后也可随时查看存储信息&…

【阶段三】Python机器学习09篇:机器学习项目实战:决策树回归模型

本篇的思维导图: 项目背景 决策树除了能进行分类分析,还能进行回归分析,即预测连续变量,此时的决策树称为回归决策树。回归问题是一类预测连续值的问题,而能满足这样要求的数学模型称作回归模型,本项目应用决策树回归模型进行探索新冠疫情、原材料、人工、物流等因素对…

generalized focal loss之quality focal loss(附代码)

参见paper 其中包含有Quality Focal Loss 和 Distribution Focal Loss。 先来说一下Quality Focal Loss, 在这之前&#xff0c;先要了解一下Focal Loss, 在这篇文章里有写过。 它主要是解决class imbalance&#xff0c;同时降低容易分类的weight&#xff0c;使训练更集中到难…

集成开发工具IDEA导入新项目,update index时间过程

集成开发工具IDEA导入新项目&#xff0c;update index时间过程&#xff0c;一般这种场景出现在&#xff1a; 1.继承开发工具比较新&#xff08;使用了优化的索引算法&#xff0c;这种算法一般是前期编译比较慢&#xff0c;一旦编译完&#xff0c;存入缓存&#xff0c;后期搜索就…

C语言经典100例(008,009,010)

题目&#xff1a;输出9*9口诀。 程序分析&#xff1a;分行与列考虑&#xff0c;共 9 行 9 列&#xff0c;i 控制行&#xff0c;j 控制列。 程序源代码&#xff1a; #include<stdio.h> int main() {int i,j,result;printf("\n");for (i1;i<10;i){for(j1;j…

fork()||fork(),循环fork()与\n

fork()||fork()输出几个A&#xff1f;父进程左边的fork()产生一个子进程&#xff08;1&#xff09;&#xff0c;父进程fork返回值>0,||不执行右边。子进程&#xff08;1&#xff09;中fork()返回0&#xff0c;执行||右边的fork()产生第二个子进程&#xff08;2&#xff09;到…

电脑蓝屏怎么解决?一键快速解决蓝屏问题

电脑蓝屏也是一个经常出现的情况&#xff0c;让人十分头疼。蓝屏的原因有很多&#xff0c;但大多数是由内存条、硬盘或散热系统造成的。电脑蓝屏怎么解决&#xff1f;遇到这个问题&#xff0c;可以从下面四个方法来入手&#xff0c;一键快速解决电脑蓝屏问题&#xff01; 操作环…

Android 深入系统完全讲解(9)

3 JNI 调试 开发 android 应用&#xff0c;主要围绕着 java 语言&#xff0c;可是&#xff0c;如果我们需要追求性能&#xff0c;或者需要调用之前我们已经写好的 c c so 库的时候&#xff0c;或者和硬件打交道的时候&#xff0c;那么我们就会接触到 JNI&#xff08;java nati…

Cadence:层次化电路+信号线束

之前用Altium Designer做工程&#xff0c;偏向于使用层次化电路信号线束的方式画图&#xff0c;类似下图&#xff1a; 现在工作需求使用Cadence&#xff0c;继续采用层次化电路设计信号线束的方式&#xff0c;总结如下&#xff1a; 打开OrCAD Capture&#xff0c;创建一个工程…

libtorch在windows使用(c++项目中部署.pt)

狗头pytorch官网教程&#xff1a;Loading a TorchScript Model in C — PyTorch Tutorials 1.13.1cu117 documentation首先我已经有了个model.pt&#xff0c;就不需要做前面序列化为文件之类的操作&#xff0c;直接从在C中加载开始最后成功的版本&#xff1a;example-app.cpp 内…

计算机CCF-C的SCI期刊,值得投稿吗? - 易智编译EaseEditing

ccf应该说是比较权威的&#xff0c;哪怕是C类。 目前不少SCI期刊开始在投稿时&#xff0c;就建议非英语母语作者进行SCI润色后再投稿。 甚至有的杂志还将润色后的English editing certificate作为硬性上传文件指标&#xff0c;列在投稿系统中。 英语润色也是为了避免学术上的…

超优化文章记录之NeurIPS2022_Gradient Descent: The Ultimate Optimizer

作者&#xff1a;Kartik Chandra 单位&#xff1a;MIT 官网链接&#xff1a;Github 下面将首先以简单翻译文章重要内容&#xff0c;穿插一些讲解&#xff0c;并进行简单的复现实验。之后总结各种资料&#xff0c;如review意见等。最后讲解代码&#xff0c;研究具体实现。 文章…

VUE_关于Vue.use()详解

问题 相信很多人在用Vue使用别人的组件时&#xff0c;会用到 Vue.use() 。例如&#xff1a;Vue.use(VueRouter)、Vue.use(MintUI)。但是用 axios时&#xff0c;就不需要用 Vue.use(axios)&#xff0c;就能直接使用。那这是为什么呐&#xff1f; 答案 因为 axios 没有 instal…

Arduino工程的创建和实例使用

下载安装 网址&#xff1a;https://www.arduino.cc/en/software&#xff0c;如下图&#xff0c;选择合适的版本下载使用 下载后直接安装就行 因为这是一个完全开源免费的软件不需要破解&#xff0c;只需要注意安装目录就行 可以参考https://blog.csdn.net/impossible_Jesse…

Kubernetes(k8s) 笔记总结(三)

提示&#xff1a;针对kubernetes的服务网络学习。 文章目录一、Kubernetes的 Service服务发现 ClusterIP方式1. Service 介绍2. Service 暴露ClusterIP的方式(集群内部访问)3. Service 暴露NodePort方式(集群外也可以访问)二、Kubernets 之 Ingress1. Ingress 介绍2. Ingress 安…