若依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
-
配置指向修改下
-
重点: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);
}