【案例共创】基于仓颉编程语言实现SQL脚本模板渲染工具

本案例由开发者:Changeden提供

一、概述

1. 案例介绍

华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。

本案例基于华为开发者空间云主机的CodeArts IDE for Cangjie编辑器进行操作演示。我们拉取sql_script源代码,修改main.cj内容,测试该工具的能力。

2. 适用对象

  • 企业
  • 个人开发者
  • 高校学生

3. 案例时间

本案例总时长预计60分钟。

4. 案例流程

说明:

  1. 领取华为开发者空间 - 云主机 ,下载项目源码;
  2. 打开仓颉编辑器,导入项目,修改工程代码与配置;
  3. 运行项目,实现SQL脚本模板渲染。

5. 资源总览

本案例预计花费0元。

资源名称规格单价(元)时长(分钟)
华为开发者空间 - 云主机鲲鹏通用计算增强型 kc2 | 4vCPUs | 8G | Ubuntu免费60

二、环境配置与资源领取

1. 开发者空间配置

面向广大开发者群体,华为开发者空间提供一个随时访问的“开发桌面云主机”、丰富的“预配置工具集合”和灵活使用的“场景化资源池”,开发者开箱即用,快速体验华为根技术和资源。

如果还没有领取云主机进入工作台界面后点击配置云主机,选择Ubuntu操作系统。

进入华为开发者空间工作台界面,点击打开云主机 > 进入桌面连接云主机。

2. 仓颉版本升级(可选)

当前案例代码基于仓颉1.0.0运行,可以在华为开发者空间云主机点打开终端命令窗口执行cjc -v查看仓颉版本是否为1.0.0,如果不是可以选择参考《基于仓颉编程语言+DeepSeek实现智能聊天助手开发秘籍》案例中的仓颉版本升级步骤。

3. 获取代码

在云主机桌面点击左下角File Manager,在/home/developer/目录下,空白处右键,选择创建文件夹,并将文件夹命名为demo

进入/home/developer/demo目录下,右键Open Terminal Here,打开命令行窗口输入如下指令,下载项目源码到本地:

git clone https://gitcode.com/changeden/sql_script

三、配置项目

1. 导入项目

在云主机桌面打开仓颉编辑器。在仓颉编辑器左上角选择文件 > 打开项目

找到上一步中代码下载到本地的路径,本案例中为:/home/developer/demo/sql_script,点右下角打开。

2. 编写main代码

打开项目后,在仓颉编辑器左侧项目工程目录中找到src/main.cj文件,将以下代码替换原代码。

package sql_script

import sql_script.core.*
import std.collection.*

main(): Int64 {
    // 编写脚本
    let script = ##"
    select * from abcd a where 
is_del = #{isDel}
-- @if(field1 != null && !isEmpty(field1)) {
    and field1 = #{field1}
    -- @if(isNotEmpty(field2)) {
    or field2 = ${field2}
    -- @}
-- @}
and field2 = ${field2}
and id in
-- @for(separator=',' open='(' close=')' index="index" item='item' collection='list') {
    #{item}
-- @}
    "##

    // 将脚本解析为模板
    let template = fromSql(script)
    // 声明参数
    let params = HashMap<String, ScriptParam>()
    params.add("isDel", false)
    params.add("field1", "None")
    params.add("field2", '"1234"')
    params.add("list", [1, 2, 3])
    // 渲染SQL
    let sql = template.bind(params)
    println(sql)

    return 0
}

3. 修改cjpm.toml

云主机打开火狐浏览器,登录仓颉gitcode代码仓:https://gitcode.com/Cangjie/cangjie-stdx-bin/releases,下载stdx插件。

stdx插件压缩包下载到本地后,打开压缩包所在的文件目录,使用unzip命令解压文件。

进入到/home/developer/Downloads/linux_aarch64_llvm/static/stdx目录下,这里就是我们所需要的linux版本的stdx插件。

在仓颉编辑器左侧项目工程目录中找到cjpm.toml文件,替换原配置项[target.aarch64-unknown-linux-gnu]path-option参数,参考如下。

[dependencies]

[package]
  cjc-version = "1.0.0"
  compile-option = ""
  description = "使用脚本构建SQL的工具"
  link-option = ""
  name = "sql_script"
  output-type = "executable"
  src-dir = ""
  target-dir = ""
  version = "0.1.6"
  package-configuration = {}

# 需要将stdx依赖路径添加到环境变量CANGJIE_STDX_PATH中

[target.x86_64-w64-mingw32]                                                   
  compile-option = "-Woff unused --diagnostic-format=noColor -Woff deprecated -lcrypt32"
  [target.x86_64-w64-mingw32.bin-dependencies]
    path-option = ["${CANGJIE_STDX_PATH}"]

[target.x86_64-unknown-linux-gnu]
  compile-option = "-Woff unused --diagnostic-format=noColor -Woff deprecated -ldl"
  [target.x86_64-unknown-linux-gnu.bin-dependencies]
    path-option = ["${CANGJIE_STDX_PATH}"]

[target.aarch64-unknown-linux-gnu]
  compile-option = "-Woff unused --diagnostic-format=noColor -Woff deprecated -ldl"
  [target.aarch64-unknown-linux-gnu.bin-dependencies]
    path-option = ["/home/developer/Downloads/linux_aarch64_llvm/static/stdx"]

修改完成后,Ctrl + S,然后选择Yes

4. 运行项目

在仓颉编辑器右上方,点击编译配置选项,选择编辑配置

在运行/调试配置页面,左上角点“+”,下拉选项中选择Cangjie(cjdb) Debug > launch

保持默认配置,点应用,然后确定

在仓颉编辑器右上方,编译配置选项选择Cangjie:launch,然后点右上角运行按钮。

控制台输出如下SQL语句:

select * from abcd a where is_del = false and field1 = 'None' or field2 = "1234" and field2 = "1234" and id in ( 1 , 2 , 3 )

5. 特性

工具已支持如下特性,等着您来体验:

- 动态解析SQL脚本
- 动态渲染SQL
- 控制流脚本
- 自定义渲染函数
- 扫描基于Markdown语法编写的Mapper
- 扫描基于XML语法编写的Mapper

至此,基于仓颉编程语言实现SQL脚本模板渲染工具的演示已全部完成。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值