• 前置条件
    • 介绍
    • 创建用户
    • 创建数据库
    • 编写表结构对应的groovy脚本
    • 初始化表结构
    • 验证表结构
    • 项目数据库配置

    前置条件

    在开发之前,请确保本地项目已经创建成功,详见 新建项目

    介绍

    项目创建成功之后,需要初始化本地数据库。

    • 创建用户
    • 创建数据库
    • 编写表结构对应的groovy脚本
    • 初始化表结构
    • 验证表结构
    • 项目数据库配置

    创建用户

    确保数据库启动成功,并创建项目访问的用户。

    1. CREATE USER 'choerodon'@'%' IDENTIFIED BY "123456";

    创建数据库

    用户创建成功之后,创建项目对应的数据库,并将新创建的数据库权限赋予用户。

    1. CREATE DATABASE todo_service DEFAULT CHARACTER SET utf8mb4;
    2. GRANT ALL PRIVILEGES ON todo_service.* TO choerodon@'%';
    3. FLUSH PRIVILEGES;

    编写表结构对应的groovy脚本

    Choerodon 采用Liquibase + groovy 的方式对数据库管理。

    更多有关Liguibase的资料见 Liquibase 官网。

    创建groovy文件存储的文件夹,并且创建groovy文件。

    1. $ mkdir -p src/main/resources/script/db
    2. $ cd src/main/resources/script/db
    3. $ touch todo_user.groovy todo_task.groovy
    1. // todo_user.groovy
    2. package script.db
    3. databaseChangeLog(logicalFilePath: 'todo_user.groovy') {
    4. changeSet(id: '2019-05-30-todo_user', author: 'your.email@email.com') {
    5. createTable(tableName: "TODO_USER") {
    6. column(name: 'ID', type: 'BIGINT UNSIGNED', remarks: 'ID', autoIncrement: true) {
    7. constraints(primaryKey: true)
    8. }
    9. column(name: 'EMPLOYEE_NAME', type: 'VARCHAR(32)', remarks: '员工名')
    10. column(name: 'EMPLOYEE_NUMBER', type: 'VARCHAR(32)', remarks: '员工号') {
    11. constraints(unique: true)
    12. }
    13. column(name: 'EMAIL', type: 'VARCHAR(32)', remarks: '邮箱')
    14. column(name: "OBJECT_VERSION_NUMBER", type: "BIGINT", defaultValue: "1")
    15. column(name: "CREATED_BY", type: "BIGINT", defaultValue: "-1")
    16. column(name: "CREATION_DATE", type: "DATETIME", defaultValueComputed: "CURRENT_TIMESTAMP")
    17. column(name: "LAST_UPDATED_BY", type: "BIGINT", defaultValue: "-1")
    18. column(name: "LAST_UPDATE_DATE", type: "DATETIME", defaultValueComputed: "CURRENT_TIMESTAMP")
    19. }
    20. }
    21. }
    1. // todo_task.groovy
    2. package script.db
    3. databaseChangeLog(logicalFilePath: 'todo_task.groovy') {
    4. changeSet(id: '2019-05-30-todo_task', author: 'your.email@email.com') {
    5. createTable(tableName: "TODO_TASK") {
    6. column(name: 'ID', type: 'BIGINT UNSIGNED', remarks: 'ID', autoIncrement: true) {
    7. constraints(primaryKey: true)
    8. }
    9. column(name: 'EMPLOYEE_ID', type: 'BIGINT', remarks: '员工ID')
    10. column(name: 'STATE', type: 'VARCHAR(36)', remarks: '状态')
    11. column(name: 'TASK_NUMBER', type: 'VARCHAR(64)', remarks: '任务编号') {
    12. constraints(unique: true)
    13. }
    14. column(name: 'TASK_DESCRIPTION', type: 'VARCHAR(256)', remarks: '任务描述')
    15. column(name: "OBJECT_VERSION_NUMBER", type: "BIGINT", defaultValue: "1")
    16. column(name: "CREATED_BY", type: "BIGINT", defaultValue: "-1")
    17. column(name: "CREATION_DATE", type: "DATETIME", defaultValueComputed: "CURRENT_TIMESTAMP")
    18. column(name: "LAST_UPDATED_BY", type: "BIGINT", defaultValue: "-1")
    19. column(name: "LAST_UPDATE_DATE", type: "DATETIME", defaultValueComputed: "CURRENT_TIMESTAMP")
    20. }
    21. }
    22. }

    初始化表结构

    在根目录下,创建init-local-database.sh 文件。

    1. $ touch init-local-database.sh

    修改初始化脚本。

    1. #!/usr/bin/env bash
    2. MAVEN_LOCAL_REPO=$(cd / && mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout)
    3. TOOL_GROUP_ID=io.choerodon
    4. TOOL_ARTIFACT_ID=choerodon-tool-liquibase
    5. TOOL_VERSION=${1:-0.11.0.RELEASE}
    6. TOOL_JAR_PATH=${MAVEN_LOCAL_REPO}/${TOOL_GROUP_ID/\./\/}/${TOOL_ARTIFACT_ID}/${TOOL_VERSION}/${TOOL_ARTIFACT_ID}-${TOOL_VERSION}.jar
    7. mvn org.apache.maven.plugins:maven-dependency-plugin:get \
    8. -Dartifact=${TOOL_GROUP_ID}:${TOOL_ARTIFACT_ID}:${TOOL_VERSION} \
    9. -Dtransitive=false
    10. #java -Dspring.datasource.url="jdbc:oracle:thin:@127.0.0.1:1521:xe" \
    11. java -Dspring.datasource.url="jdbc:mysql://localhost/todo_service?useUnicode=true&characterEncoding=utf-8&useSSL=false" \
    12. -Dspring.datasource.username=choerodon \
    13. -Dspring.datasource.password=123456 \
    14. -Ddata.drop=false -Ddata.init=true \
    15. -Ddata.dir=src/main/resources \
    16. -jar ${TOOL_JAR_PATH}

    进入根目录执行如下命令:

    1. $ sh init-local-database.sh [version] #如未指定version,则默认使用tool version为0.11.0.

    控制台打印出如下信息,则表示初始化成功。

    1. 数据库初始化任务完成

    脚本执行程序会自动扫描resources 中的groovy 数据库初始化文件以及excel 初始化数据。

    执行 init-local-database.sh 脚本,若出现错误:

    1. Error: Unable to access jarfile

    则需自行检查脚本中TOOL_JAR_PATH路径是否正确。

    您也可以手动下载最新版本的 choerodon-tool-liquibase.jar,自行指定TOOL_JAR_PATH路径进行数据初始化。

    验证表结构

    登录数据库,查询现有的表结构。

    1. mysql> use todo_service;
    2. Database changed
    3. mysql> show tables;
    4. +------------------------+
    5. | Tables_in_todo_service |
    6. +------------------------+
    7. | DATABASECHANGELOG |
    8. | DATABASECHANGELOGLOCK |
    9. | TODO_TASK |
    10. | TODO_USER |
    11. +------------------------+
    12. 4 rows in set (0.00 sec)

    项目数据库配置

    pom.xml 文件中添加数据库依赖。

    1. <dependency>
    2. <groupId>io.choerodon</groupId>
    3. <artifactId>choerodon-starter-mybatis</artifactId>
    4. <version>${choerodon.starters.version}</version>
    5. </dependency>
    6. <dependency>
    7. <groupId>mysql</groupId>
    8. <artifactId>mysql-connector-java</artifactId>
    9. </dependency>

    在项目的application.yml 文件中添加数据库连接信息:

    1. spring:
    2. datasource:
    3. url: jdbc:mysql://localhost:3306/todo_service?useUnicode=true&characterEncoding=utf-8&useSSL=false
    4. username: choerodon
    5. password: 123456

    项目根目录下执行命令。项目正常启动,则数据库连接配置正常。

    1. $ mvn clean spring-boot:run