# 简要介绍

主要用来创建系统中用到的数据结构,包括数据库表结构和非数据库表,支持泛型模板,继承。

需要配置数据库连接,可以从数据库中导入数据表结构。

# 配置数据库连接

数据库连接的配置前置条件:

1)安装了 unixODBC,具体安装和配置参考安装教程的 UnixODBC 章节

2)在 bin/lib/kmyckj/prj_c/db_connect.ini 文件中设置数据库的连接

[kmyckj]
prj_c=user/password@db_tns
1
2

user:数据库连接的用户名称

password:数据库密码

db_tns:ODBC配置文件 /etc/odbc.ini 中,对应数据库连接节点的名称,如 myPostgreSQL

3)导入表结构的SQL语句,如:

bin/lib/kmyckj/prj_c/db_sql/get_table_struct_for_PostgreSQL.sql

注:kmyckj 和 prj_c 分别是主用户名 和 系统名

如果语句不正确,或不支持对应的数据库,可自行编写该SQL语句。

如果是 MySQL(get_table_struct_for_MySQL.sql),需要修改数据库名称

SELECT
    TABLE_NAME AS tb_name,
    COLUMN_NAME AS field_name,
    DATA_TYPE AS field_type,
    COLUMN_COMMENT AS field_comment,
    CASE
        WHEN COLUMN_KEY = 'PRI' THEN 1
        ELSE 0
    END AS is_key,
    ROW_NUMBER() OVER (ORDER BY COLUMN_NAME) AS field_order_no
FROM
    INFORMATION_SCHEMA.COLUMNS
WHERE
    TABLE_SCHEMA = '你的数据库名' -- 替换为你的数据库名
ORDER BY TABLE_NAME
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

如果是 Oracle(get_table_struct_for_Oracle.sql),需要修改数据库用户名

SELECT
    COL.TABLE_NAME AS "tb_name",
    COL.COLUMN_NAME AS "field_name",
    COL.DATA_TYPE AS "field_type",
    COM.COMMENTS AS "field_comment",
    CASE WHEN PRI.COLUMN_NAME IS NOT NULL THEN 1 ELSE 0 END AS "is_key",
    COL.COLUMN_ID AS "field_order_no"
FROM ALL_TAB_COLUMNS COL
LEFT JOIN ALL_COL_COMMENTS COM 
     ON COL.TABLE_NAME = COM.TABLE_NAME 
     AND COL.COLUMN_NAME = COM.COLUMN_NAME 
     AND COL.OWNER = COM.OWNER
LEFT JOIN (
    SELECT
        UTC.TABLE_NAME,
        UTC.COLUMN_NAME,
        UTC.OWNER
    FROM ALL_CONSTRAINTS UC
    JOIN ALL_CONS_COLUMNS UTC
        ON UC.CONSTRAINT_NAME = UTC.CONSTRAINT_NAME
        AND UC.OWNER = UTC.OWNER
    WHERE UC.CONSTRAINT_TYPE = 'P'
) PRI 
    ON COL.TABLE_NAME = PRI.TABLE_NAME
    AND COL.COLUMN_NAME = PRI.COLUMN_NAME
    AND COL.OWNER = PRI.OWNER
WHERE
    COL.OWNER = '你的用户名' -- 替换为你的用户名或者表所在的schema,注意大小写
ORDER BY
    COL.TABLE_NAME,
    COL.COLUMN_ID;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

如果是 MySQL、Oracle、PostgreSQL、SQLServer 之外的数据库,需要在 get_table_struct_for_other.sql 中自行编写查询表结构的语句。

# 导入方式

导入支持直接从数据导入,也支持从Excel表格中导入。

Excel表格中导入说明:

1.文件第一个工作表为导入的数据;

2.表格的第一行为标题行,即字段名;

3.标题行的字段名称为:tb_name, field_name, field_type, field_comment, is_key, field_order_no;

4.具体内容参考SQL语句:get_table_struct_for_PostgreSQL.sql

# 生成类文件

C/C++:生成类文件,所有数据结构在同一个文件中 services_c/主用户账户/系统名称/model/tb_struct.hpp

Java:生成类文件在 services_c/主用户账户/系统名称/main/java//主用户账户/系统名称/model 目录下,每一个数据结构对应一个文件。