首页
  • 2024.1.1.0
  • 2024.1.1.1
  • 2024.1.2.0
  • 2024.1.3.0
  • Java
  • Linux
  • Deploy
  • Application
关于
友情链接
GitHub (opens new window)

Xiao ku

板砖师傅
首页
  • 2024.1.1.0
  • 2024.1.1.1
  • 2024.1.2.0
  • 2024.1.3.0
  • Java
  • Linux
  • Deploy
  • Application
关于
友情链接
GitHub (opens new window)
  • 版本日志
  • 贡献清单
  • 2024.1.3.0

  • 2024.1.2.0

  • 2024.1.1.1

  • 2024.1.1.0

    • Simple-Starter概述
    • 自动装配模块

      • simple-starter-web
      • simple-starter-redisson
      • simple-starter-s3
      • simple-starter-socket
      • simple-starter-grpc
      • simple-starter-datasource
        • 简介
        • 引入依赖
        • 配置项
        • 功能
          • 自动创建库
          • 分页插件
          • 分页请求参数
          • 工具类
          • MapperLocations
          • 介绍
          • 问题点
          • 解决示例
      • simple-starter-freemarker
      • simple-starter-cloud
      • simple-starter-encrypt
      • simple-starter-dict
      • simple-starter-email
      • simple-starter-gateway
      • simple-starter-package
    • 服务类模块

  • OpenSource
  • 2024.1.1.0
  • 自动装配模块
xiaoku
2023-04-04
目录

simple-starter-datasource

# 简介

依赖使用HikariCP、P6spy监控日志、MybatisPlus、包含通用CURD控制层
功能:启动应用程序自动创建数据库、自动创建表
功能:通过实例化MapperLocations获取配置值 追加配置文件中的 mapperLocations 属性值

# 引入依赖

    <dependencies>
        <dependency>
            <groupId>cn.iosd</groupId>
            <artifactId>simple-starter-datasource</artifactId>
            <version>Version</version>
        </dependency>
    </dependencies>
1
2
3
4
5
6
7

# 配置项

simple:
  datasource:
    #自动创建数据库 缺省项为true 
    autoCreateDatabase: true
    locations:
      ## 开启实现MapperLocationsProvider接口获取配置值,实现接口追加配置文件中mapper-locations属性 缺省项为true
      enabled: true
1
2
3
4
5
6
7

# 功能

# 自动创建库

业务逻辑类:DatabaseInitializer
实现了ApplicationContextInitializer接口,用于在Spring应用程序上下文初始化时初始化数据库。
从应用程序上下文环境中获取数据库连接属性,并根据jdbcUrl解析出数据库名,然后执行创建数据库的SQL语句。

# 分页插件

启用配置类效果代码:MybatisPlusConfig
使用:mybatis-plus分页插件

# 分页请求参数

实体类:PageRequest
一个封装了分页请求参数的Java类,包含起始页、每页显示记录数、排序、查询条件参数等字段。

# 工具类

将自定义的分页对象PageRequest转换为mybatisPlus的分页对象Page
使用示例:

    @Operation(summary = "Api-查询-分页")
    @PostMapping("/api/page")
    public Response<IPage<T>> apiPage(@RequestBody PageRequest<T> req) {
        return Response.ok(service.page(DsConvertUtil.page(req), Wrappers.lambdaQuery(req.getData())));
    }
1
2
3
4
5

# MapperLocations

# 介绍

实例化MapperLocations获取配置值 覆盖配置文件中的 mapperLocations 属性值
解决:各个模块不同mapper-locations配置能在父级模块没有配置其需要的mapper-locations时能正常使用
注意项:当开启时,配置文件中的mapperLocations属性值可同时生效

# 问题点

例

子模块工程所需 配置文件参数
mybatis-plus.mapper-locations=classpath*:/cn/iosd/base/**/*Mapper.xml
父模块依赖子模块,而父模块的配置文件参数实际为
mybatis-plus.mapper-locations=classpath*:/cn/iosd/test/**/*Mapper.xml
1
2
3
4

父模块运行时,对于子模块调用的mapper接口将会报错:

Invalid bound statement (not found):
1

除非父模块配置包含子模块的参数,这样需要知道各个子模块所需配置,较为麻烦

mybatis-plus.mapper-locations=classpath*:/cn/iosd/test/**/*Mapper.xml,classpath*:/cn/iosd/base/**/*Mapper.xml
1

# 解决示例

子模块实例化MapperLocations

    @Bean
    public MapperLocations paramMapperLocations() {
        return new MapperLocations("classpath*:/cn/iosd/base/param/mapper/**/*Mapper.xml");
    }
1
2
3
4

父模块实现MapperLocationsProvider

    @Bean
    public MapperLocations collectionMapperLocations() {
        return new MapperLocations("classpath*:/cn/iosd/test/**/*Mapper.xml");
    }
1
2
3
4
上次更新: 2024/03/25, 02:28:08
simple-starter-grpc
simple-starter-freemarker

← simple-starter-grpc simple-starter-freemarker→

Copyright © 2019-2024
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式