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 项目实战来理解语言+框架能力
  • ✅ 不要被奇怪的语法吓到(如 ..$%),每个符号有其意义
  • ✅ 官方社区是最佳求助平台

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

相关推荐
该用户已不存在36 分钟前
8个Docker的最佳替代方案,重塑你的开发工作流
前端·后端·docker
lizhongxuan42 分钟前
groupcache 工作原理
后端
栗然1 小时前
Spring Boot 项目中使用 MyBatis 的 @SelectProvider 注解并解决 SQL 注入的问题
java·后端
倔强的石头_1 小时前
【C++指南】类和对象(九):内部类
后端
lovebugs2 小时前
Java中的OutOfMemoryError:初学者的诊断与解决指南
jvm·后端·面试
00后程序员2 小时前
iOS端网页调试 debug proxy策略:项目中的工具协同实践
后端
yeyong3 小时前
用springboot开发一个snmp采集程序,并最终生成拓扑图(三)
后端
倚栏听风雨3 小时前
IDEA 插件开发 plugin.xml 中 <depends config-file=".xml" optional="true"> 详解
后端
惜鸟3 小时前
Spring Boot项目自己封装一个分页查询工具
spring boot·后端