前置条件

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

介绍

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

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

创建用户

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

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

创建数据库

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

  1. CREATE DATABASE todo_service DEFAULT CHARACTER SET utf8;
  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: '2018-11-20-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: '2018-11-20-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: 'TASH_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. #!/bin/bash
  2. version="0.7.0.RELEASE"
  3. mkdir -p bin
  4. if [ ! -f bin/choerodon-tool-liquibase.jar ]
  5. then
  6. curl https://oss.sonatype.org/content/groups/public/io/choerodon/choerodon-tool-liquibase/${version}/choerodon-tool-liquibase-${version}.jar -o ./bin/choerodon-tool-liquibase.jar
  7. fi
  8. java -Dspring.datasource.url="jdbc:mysql://localhost:3306/todo_service?useUnicode=true&characterEncoding=utf-8&useSSL=false" \
  9. -Dspring.datasource.username=choerodon \
  10. -Dspring.datasource.password=123456 \
  11. -Ddata.drop=false -Ddata.init=true \
  12. -Ddata.dir=./src/main/resources \
  13. -jar ./bin/choerodon-tool-liquibase.jar

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

  1. $ sh ./init-local-database.sh

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

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

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

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

  1. Error: Invalid or corrupt jarfile target/choerodon-tool-liquibase.jar

则自行下载最新版本的 choerodon-tool-liquibase.jar 并重命名覆盖./bin/choerodon-tool-liquibase.jar 并重新执行init-local-database.sh 脚本

验证表结构

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

  1. mysql> show tables;
  2. +---------------------------------------+
  3. | Tables_in_todo_service |
  4. +---------------------------------------+
  5. | DATABASECHANGELOG |
  6. | DATABASECHANGELOGLOCK |
  7. | todo_task |
  8. | todo_user |
  9. +---------------------------------------+
  10. 5 rows in set (0.00 sec)

项目数据库配置

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

  1. <dependency>
  2. <groupId>io.choerodon</groupId>
  3. <artifactId>choerodon-starter-mybatis-mapper</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