ddl2struct

Welcome to ddl2struct !!!

Generate Golang Struct File From DDL.

Install

$ go get github.com/tangximing/ddl2struct

Usage

$ ddl2struct -h
generate golang struct file from ddl

Usage:
 ddl2struct [flags]

Flags:
  -d, --dir string       golang dir to generate
  -h, --help             help for ddl2struct
  -p, --package string   golang package to generate
  -s, --sql string       ddl sql file path

Example

$ cat ./test/table.sql
CREATE TABLE `ddl_table1` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `enum1` tinyint(4) NOT NULL DEFAULT 1 COMMENT '枚举1。枚举(1:枚举值1,2:枚举值2,100:枚举值100)',
  `field1` varchar(32) NOT NULL DEFAULT '' COMMENT '字段1',
  `field2` varbinary(64) NOT NULL DEFAULT '' COMMENT '字段2',
  `ctime` datetime NOT NULL DEFAULT current_timestamp() COMMENT '创建时间',
  `mtime` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1281 DEFAULT CHARSET=utf8mb4 COMMENT='表1';

CREATE TABLE `ddl_table2` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `field1` varchar(255) NOT NULL DEFAULT '' COMMENT '字段1',
  `field2` varchar(255) NOT NULL DEFAULT '' COMMENT '字段2',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='表2'

$ ddl2struct -s ./test/table.sql -d ./test/model -p model

$ ll ./test/
drwxr-xr-x   4 ximing  staff  128 Oct  8 21:30 ./
drwxr-xr-x  14 ximing  staff  448 Oct  8 21:30 ../
drwxr-xr-x   4 ximing  staff  128 Oct  8 21:30 model/
-rw-r--r--   1 ximing  staff  950 Oct  8 21:16 table.sql

$ cat ./test/model/ddl_table_1.go
package model

import (
        "time"
)

type Enum1Enum int8

const (
        // 1 - 枚举值1
        Enum11 Enum1Enum = 1
        // 2 - 枚举值2
        Enum12 Enum1Enum = 2
        // 100 - 枚举值100
        Enum1100 Enum1Enum = 100
)

type DdlTable1 struct {
        // 主键ID
        Id int `gorm:"column:id" json:"id"`
        // 枚举1
        Enum1 Enum1Enum `gorm:"column:enum1" json:"enum_1"`
        // 字段1
        Field1 string `gorm:"column:field1" json:"field_1"`
        // 字段2
        Field2 string `gorm:"column:field2" json:"field_2"`
        // 创建时间
        Ctime time.Time `gorm:"column:ctime" json:"ctime"`
        // 修改时间
        Mtime time.Time `gorm:"column:mtime" json:"mtime"`
}
HC32F003 是一款基于 ARM Cortex-M0 内核的低功耗微控制器,广泛应用于消费电子、工业控制等领域。DDL 可能指代设备驱动库(Device Driver Library),用于简化硬件操作并提供统一接口。 以下是关于 HC32F003 的 DDL 技术文档或使用指南的相关信息: ### 官方资源 官方通常会发布详细的开发手册和技术文档来支持开发者的工作。这些文档可能包括但不限于以下内容: - **数据手册 (Datasheet)**:描述芯片的功能特性、电气参数以及封装形式等基本信息[^1]。 - **用户手册 (User Manual)**:详细介绍如何配置和初始化外设模块,例如 GPIO、UART 和 SPI 接口等功能[^2]。 - **软件包 (Software Package)**:包含源代码示例项目及说明文件,帮助快速启动应用程序开发工作流程[^3]。 ### 开发环境设置 为了充分利用 DDL 提供的功能,在搭建好适合该系列 MCU 的集成开发环境之前需要完成几个关键步骤: #### 工具链安装 推荐使用 Keil MDK 或 IAR Embedded Workbench 这样的 IDE 来编译链接程序,并通过 JTAG/SWD 调试探针下载固件到目标板上运行测试[^4]。 #### 配置向量表地址 由于不同型号之间可能存在差异,默认中断向量表位置可能会有所变化;因此需确认具体产品的引导加载方式是否允许自定义调整此值[^5]。 ```c // 设置向量表基址寄存器 SCB->VTOR 到闪存起始处 SCB->VTOR = FLASH_BASE; ``` ### 示例应用案例分析 假设我们要实现一个简单的 LED 闪烁功能,则可以按照如下逻辑编写代码片段展示基本用法: ```c #include "hc32f003.h" int main(void){ // 初始化系统时钟 SystemCoreClockUpdate(); // 配置端口模式为推挽输出 PORT_InitTypeDef port_init_struct; port_init_struct.GPIO_Mode = GPIO_MODE_OUT_PP; port_init_struct.Pin_Speed = PIN_SPEED_2MHZ; GPIO_Init(GPIOA, &port_init_struct); while(1){ GPIO_SetBits(GPIOA,GPIO_PIN_5); /* 打开LED */ Delay_ms(500); GPIO_ResetBits(GPIOA,GPIO_PIN_5); /* 关闭LED */ Delay_ms(500); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值