ObjectScript 中文入门教程

面向初学者,带你快速上手 InterSystems IRIS 的编程语言


一、什么是 ObjectScript?

ObjectScript 是 InterSystems 公司为其数据库产品(如 Caché 和 IRIS)设计的一种类 SQL 的面向对象语言。它融合了过程式、面向对象编程和 SQL 查询的能力,广泛用于医疗、金融等行业构建高性能系统。

它不仅是一门语言,更是一套数据访问、类定义、服务构建的开发范式


二、入门准备

1. 安装开发环境(推荐使用 VS Code)

  • 安装 VS Code

  • 安装插件:InterSystems ObjectScript

    插件地址:marketplace.visualstudio.com/items?itemN...

  • 安装并运行 IRIS(可使用 Docker 版):

    css 复制代码
    bash
    复制编辑
    docker run -d --name iris -p 52773:52773 -p 1972:1972 \
      intersystemsdc/iris-community:latest

2. 登录管理界面

打开浏览器访问:
http://localhost:52773/csp/sys/UtilHome.csp

默认用户名密码:_SYSTEM / SYS


三、ObjectScript 的基本语法

1. Hello World 示例

csharp 复制代码
objectscript
复制编辑
Class Demo.Hello Extends %Persistent
{
    Method SayHello()
    {
        WRITE "你好,ObjectScript!", !
    }
}
  • Class:定义类,类似 Java、C#。
  • Extends %Persistent:表示这个类可以被持久化(即存储到数据库)。
  • Method:定义方法。
  • WRITE:输出内容到终端,! 表示换行。

调用方法(在终端或代码中):

scss 复制代码
objectscript
复制编辑
DO ##class(Demo.Hello).SayHello()

2. 变量与类型

ObjectScript 是动态类型语言,也可以声明类型:

ini 复制代码
objectscript
复制编辑
SET name = "小明"
SET age = 18
WRITE name, " 的年龄是 ", age, !

3. 条件与循环

sql 复制代码
objectscript
复制编辑
IF age > 18 {
    WRITE "成年人"
} ELSE {
    WRITE "未成年人"
}

FOR i=1:1:5 {
    WRITE "当前是第 ", i, " 次", !
}

4. 类属性与持久化

vbnet 复制代码
objectscript
Class Demo.Person Extends %Persistent
{
    Property Name As %String;
    Property Age As %Integer;
}

创建并保存数据:

vbnet 复制代码
objectscript
SET person = ##class(Demo.Person).%New()
SET person.Name = "小红"
SET person.Age = 22
DO person.%Save()

从数据库中读取:

ini 复制代码
objectscript
SET id = 1
SET p = ##class(Demo.Person).%OpenId(id)
WRITE p.Name

四、操作数据库(SQL + 对象)

1. 使用对象操作数据

vbnet 复制代码
objectscript
SET student = ##class(Demo.Person).%New()
SET student.Name = "张三"
SET student.Age = 30
DO student.%Save()

2. 使用 SQL 执行查询

vbscript 复制代码
objectscript
SET sql = "SELECT Name, Age FROM Demo.Person WHERE Age > 20"
SET stmt = ##class(%SQL.Statement).%New()
DO stmt.%Prepare(sql)
SET rset = stmt.%Execute()

WHILE rset.%Next() {
    WRITE rset.Name, " - ", rset.Age, !
}

五、构建 REST API(简版示例)

vbscript 复制代码
objectscript
Class Demo.API.Person Extends %CSP.REST
{

    XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
    {
        <Routes>
            <Route Url="/person" Method="GET" Call="GetAll"/>
        </Routes>
    }

    ClassMethod GetAll() As %Status
    {
        SET tRS = ##class(%ResultSet).%New("Demo.Person:ListAll")
        DO tRS.Execute()
        DO %response.SetContentType("application/json")
        DO %response.Write(tRS.%ToJSON())
        QUIT $$$OK
    }
}

配置完这个类之后,你就可以通过 http://localhost:52773/csp/yournamespace/demo/api/person 获取 JSON 格式的数据。


六、调试与工具使用

  • %Studio / VS Code 可用于编辑类
  • %SYS 命名空间中包含系统函数
  • WRITEZWRITE 可用于查看变量
  • DO ##class(ClassName).Method() 是类方法调用格式

七、推荐练习项目

  • 📌 学会创建 PersonBook 等类并进行增删改查
  • 📌 学会用 SQL + Object 混合方式查询数据
  • 📌 学会构建一个 REST API 暴露数据(GET/POST)
  • 📌 尝试使用"全局变量"(Globals)存储结构化数据

八、资料推荐(附中文学习建议)

类型 链接
官方入门教程 learning.intersystems.com/
ObjectScript 文档 docs.intersystems.com/irislatest/...
中文交流社区 community.intersystems.com(中英混合)
VSCode 插件 ObjectScript Extension

九、学习建议

  • ✅ 刚开始时多练 Class + SQL + 方法调用 的基础套路
  • ✅ 通过 REST 项目实战来理解语言+框架能力
  • ✅ 不要被奇怪的语法吓到(如 ..$%),每个符号有其意义
  • ✅ 官方社区是最佳求助平台

我是桃夭,期待你的关注。

相关推荐
妮妮喔妮38 分钟前
Go的垃圾回收
开发语言·后端·golang
lang201509283 小时前
Spring Boot构建RESTful服务与Actuator监控
spring boot·后端·restful
向上的车轮3 小时前
无需云服务的家庭相册:OpenHarmony 上的 Rust 实践
开发语言·后端·rust
程序猿小蒜6 小时前
基于springboot的车辆管理系统设计与实现
java·数据库·spring boot·后端·spring·oracle
90后的晨仔6 小时前
Java后端开发:从零构建企业级应用的完整架构与技术栈详解
后端
我命由我123457 小时前
Spring Cloud - Spring Cloud 声明式接口调用(Fiegn 声明式接口调用概述、Fiegn 使用)
java·后端·spring·spring cloud·微服务·架构·java-ee
canonical_entropy7 小时前
领域驱动设计(DDD)中聚合根的最主要职责真的是维护一致性吗?
后端·架构·领域驱动设计
AntBlack7 小时前
不当韭菜 : 好像真有点效果 ,想藏起来自己用了
前端·后端·python
橙子家8 小时前
Serilog 日志库的简介
后端
间彧8 小时前
Java线程池深度实战:不同场景下的最优选择与性能优化
后端