后端启动
提示
因为Seata不支持SQL Server,DATASOURCE模式必须使用Seata,所以DATASOURCE模式也不支持 SQL Server。
修改配置并编译项目
创建数据库:根据你使用的数据库类型,选择创库语句
4.9.0 之前的版本租户库是 lamp_ds_c_base_{TenantId},4.10.0开始为了适配Oracle,变更为lamp_base_{TenantId},原因是:Oracle的库、表、字段等长度不能超过30字符。
lamp-boot-pro-datasrouce-column lamp-boot-pro-column lamp-boot-pro-none # mysql CREATE DATABASE IF NOT EXISTS `lamp_ds_c_defaults` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE IF NOT EXISTS `lamp_base_1` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # oracle create user lamp_ds_c_defaults identified by lamp_ds_c_defaults; create user lamp_base_1 identified by lamp_base_1; grant create session,create table,create sequence,create view,resource to lamp_ds_c_defaults; grant create session,create table,create sequence,create view,resource to lamp_base_1; # SQL Server CREATE DATABASE lamp_ds_c_defaults COLLATE Chinese_PRC_CI_AS; CREATE DATABASE lamp_base_1 COLLATE Chinese_PRC_CI_AS;
# mysql CREATE DATABASE IF NOT EXISTS `lamp_column` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # oracle create user lamp_column identified by lamp_column; grant create session,create table,create sequence,create view,resource to lamp_column; # SQL Server CREATE DATABASE lamp_column COLLATE Chinese_PRC_CI_AS;
# mysql CREATE DATABASE IF NOT EXISTS `lamp_none` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # oracle create user lamp_none identified by lamp_none; grant create session,create table,create sequence,create view,resource to lamp_none; # SQL Server CREATE DATABASE lamp_none COLLATE Chinese_PRC_CI_AS;
导入sql脚本
lamp-boot-pro-datasource-column lamp-boot-pro-column lamp-boot-pro-none 向 lamp_ds_c_defaults 库导入 lamp_ds_c_defaults.sql
向 lamp_base_1 库导入 lamp_base_1.sql
仅Oracle数据库需要执行:向 lamp_ds_c_defaults 库导入 defaults_data.sql
仅Oracle数据库需要执行:向 lamp_ds_c_defaults 库导入 defaults_seq.sql
仅Oracle数据库需要执行:向 lamp_base_1 库导入 base_data.sql
- 向 lamp_column 库导入 lamp_column.sql
- 向 lamp_none 库导入 lamp_none.sql
lamp-boot-pro-datasource-column项目,确保 ContextConstants.TENANT_BASE_POOL_NAME_HEADER 跟lamp_base库的前缀一致。
public final class ContextConstants { // "lamp_base" 一定要和 创建base库(CREATE DATABASE lamp_base_1)时 的前缀一致 public static final String TENANT_BASE_POOL_NAME_HEADER = "lamp_base"; }
修改 application.yml 中
spring.config.activate.on-profile=dev
部分配置提示
密码是纯数字、含有特殊字符、没有密码的, 必须加上单引号。 如:
- 你的密码是:00000,必须写成:'00000'
- 没有密码必须写成:''
根据您使用的数据库类型,修改修改1、修改2、修改33处内容, 没有贴出来的参数保持默认即可。
lamp-boot-pro-datasource-column lamp-boot-pro-column lamp-boot-pro-none --- # 配置文件分隔符,在application.yml中,位于下方的配置,会覆盖上方的配置!!! # 开发环境使用 相当于 lamp-boot-server-dev.yml lamp: cache: type: REDIS redis: ip: 127.0.0.1 port: 16379 password: SbtyMveYNfLzTks7H0apCmyStPzWJqjy database: 0 rabbitmq: enabled: false ip: 127.0.0.1 port: 5672 username: zuihou password: zuihou druid-oracle: &druid-oracle-dev validation-query: SELECT 'x' FROM DUAL druid-mysql: &druid-mysql-dev validation-query: SELECT 'x' druid-sqlserver: &druid-sqlserver-dev validation-query: SELECT 'x' # 修改1:数据库连接基本信息, 三选一!!!三选一!!!不是同时需要三种数据库!!! oracle: &db-oracle-dev driverClassName: oracle.jdbc.driver.OracleDriver username: 'lamp_ds_c_defaults' password: 'lamp_ds_c_defaults' url: jdbc:oracle:thin:@172.26.3.67:1521:helowin mysql: &db-mysql-dev driverClassName: com.mysql.cj.jdbc.Driver username: 'root' password: 'root' url: jdbc:mysql://127.0.0.1:3306/lamp_ds_c_defaults?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=false&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&nullCatalogMeansCurrent=true sqlserver: &db-sqlserver-dev driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver username: 'sa' password: '1234@abcd' url: jdbc:sqlserver://172.26.3.67:1433;DatabaseName=lamp_ds_c_defaults init: separator: GO spring: config: activate: on-profile: dev datasource: dynamic: druid: # 修改2:druid 信息 <<: *druid-mysql-dev #<<: *db-sqlserver-dev # sql server 使用我 #<<: *db-oracle-dev # oracle使用我 datasource: # 修改3: lamp_defaults数据源 锚点链接 "0": <<: *db-mysql-dev # mysql 使用我 #<<: *db-sqlserver-dev # sql server 使用我 #<<: *db-oracle-dev # oracle使用我
--- # 配置文件分隔符,在application.yml中,位于下方的配置,会覆盖上方的配置!!! # 开发环境使用 相当于 lamp-boot-server-dev.yml lamp: cache: type: REDIS redis: ip: 127.0.0.1 port: 16379 password: SbtyMveYNfLzTks7H0apCmyStPzWJqjy database: 0 rabbitmq: enabled: false ip: 127.0.0.1 port: 5672 username: zuihou password: zuihou oracle: &db-oracle-dev db-type: oracle validation-query: SELECT 'x' FROM DUAL filters: stat,wall,slf4j # druid不支持使用p6spy打印日志,所以采用druid 的 slf4j 过滤器来打印可执行日志. 将 ${spring.datasource.druid.filter.slf4j.enabled} 改为true。 username: 'lamp_column' password: 'lamp_column' # druid + oracle + p6spy 有bug ,druid 不支持! 本地打印sql可以参考 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_LogFilter , 然后配置slf4j driverClassName: oracle.jdbc.driver.OracleDriver url: jdbc:oracle:thin:@172.26.3.67:1521:helowin mysql: &db-mysql-dev db-type: mysql validation-query: SELECT 'x' filters: stat,wall username: 'root' password: 'root' driverClassName: com.p6spy.engine.spy.P6SpyDriver url: jdbc:p6spy:mysql://127.0.0.1:3306/lamp_column?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=false&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&nullCatalogMeansCurrent=true sqlserver: &db-sqlserver-dev username: 'sa' password: '1234@abcd' driverClassName: com.p6spy.engine.spy.P6SpyDriver url: jdbc:p6spy:sqlserver://172.26.3.67:1433;DatabaseName=lamp_column db-type: sqlserver validation-query: SELECT 'x' filters: stat,wall spring: config: activate: on-profile: dev datasource: druid: <<: *db-mysql-dev # <<: *db-oracle-dev # <<: *db-sqlserver-dev
--- # 配置文件分隔符,在application.yml中,位于下方的配置,会覆盖上方的配置!!! # 开发环境使用 相当于 lamp-boot-server-dev.yml lamp: cache: type: REDIS redis: ip: 127.0.0.1 port: 16379 password: SbtyMveYNfLzTks7H0apCmyStPzWJqjy database: 0 rabbitmq: enabled: false ip: 127.0.0.1 port: 5672 username: zuihou password: zuihou mysql: &db-mysql-dev filters: stat,wall db-type: mysql validation-query: SELECT 'x' username: 'root' password: 'root' # 生产使用原生驱动,开发使用p6spy驱动打印日志 driverClassName: com.p6spy.engine.spy.P6SpyDriver url: jdbc:p6spy:mysql://127.0.0.1:3306/lamp_none?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=false&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&nullCatalogMeansCurrent=true oracle: &db-oracle-dev db-type: oracle validation-query: SELECT 'x' FROM DUAL filters: stat,wall,slf4j # druid不支持使用p6spy打印日志,所以采用druid 的 slf4j 过滤器来打印可执行日志 username: 'lamp_none' password: 'lamp_none' driverClassName: oracle.jdbc.driver.OracleDriver url: jdbc:oracle:thin:@172.26.3.67:1521:helowin sqlserver: &db-sqlserver-dev username: 'sa' password: '1234@abcd' driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver url: jdbc:sqlserver://172.26.3.67:1433;DatabaseName=lamp_none #driverClassName: com.p6spy.engine.spy.P6SpyDriver # url: jdbc:p6spy:sqlserver://172.26.3.67:1433;DatabaseName=lamp_none db-type: sqlserver validation-query: SELECT 'x' filters: stat,wall spring: config: activate: on-profile: dev datasource: druid: <<: *db-mysql-dev #<<: *db-oracle-dev #<<: *db-sqlserver-dev
修改数据库驱动: 根据使用的数据库,修改 lamp-public/lamp-database-mode/pom.xml 中的驱动依赖
mysql oracle sqlserver <!-- mysql 驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
<!-- Oracle 驱动 --> <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> </dependency>
<!-- sqlserver 驱动 --> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> </dependency>
修改常量类 Condition
public class Condition { /** MySQL、SQL Server 数据库的 模糊查询 */ public static final String LIKE = SqlCondition.LIKE; // /** ORACLE 数据库的 模糊查询 */ // public static final String LIKE = SqlCondition.ORACLE_LIKE; }
修改bootstrap.yml
- logging.file.path: 日志存放的绝对路径
编译项目, 参考 项目导入 将 lamp-boot-pro-xxx 和 lamp-util 同时导入到一个IDEA工作空间, 然后使用 maven 编译项目
注意: 不要将lamp-boot-pro-datasource-column和lamp-cloud-pro-xxx、lamp-boot-pro-xxx等其他项目同时导入一个工作空间。
启动项目
- 先确保
nacos
、MySQL
、Redis
、Seata
、RabbitMQ
(可选)、等基础服务是否启动成功 - 启动: BaseServerApplication
验证是否启动成功
打开项目控制台,看到打印的如图信息说明启动成功。
访问以下地址, 能看到Swagger文档
❗️❗️❗️若评论区无法显示,请使用"手机热点"或"科学上网"。