ghost-LowCode 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
ghost-LowCode 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
ghost-LowCode 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发常用工具包
开源组织
地区 国产
投 递 者 bzGhost
适用人群 未知
收录时间 2023-09-25

软件简介

ghost-LowCode 极大减少了代码量,降低了学习成本,并提升了用户体验。

功能介绍

  • 支持热部署,一键部署发布。
  • 支持模块化安装,需要使用什么业务就安装什么业务。
  • 支持属性服务的继承、扩展。
  • 继承,我可以拥有别人的属性,服务。
  • 扩展,我可以改写别人的服务,从而使用我的服务。
  • 支持注解自动生成CURD的能力。

常用注解

@APPInfo

标记模块名称,每个JAR取名。

@Table

标记表名信息,以及Entity实体信息。

@Id

标记属性为主键

@Column

标记表数据库表字段

@NotBlank

标记创建更新表的时候字段不能为空

@Service

标记方法公开

属性 属性描述
displayName 需要展示的中文描述
event 模块加载后支持服务

@ManyToOne

ManyToOne用于表示多对一的关系,其中“多”表示关系的拥有方,而“一”表示关系的维护方。在ManyToOne关系中,通常是多的一方持有对一的一方的引用,并在数据库中存储对应的外键值。

ManyToOne关系可以通过注解来表达,在Java实体类中使用@ManyToOne注解表示,同时还需要加上@JoinColumn注解,以指定外键列的名称和关联实体。

有两种级联操作:级联保存和级联删除。级联保存表示当保存多的一方时,同时保存对应的所有一的一方对象;级联删除表示当删除一的一方时,同时删除对应的所有多的一方对象。

在@ManyToOne注解中使用cascade属性即可实现级联操作:

Model

1.基本用法

Model是ActiveRecord中最重要的组件之一,它充当MVC模式中的Model部分。以下是Model定义示例代码:

@Table(name = "im_user")
public class ImUser extends Model<ImUser> {

}

以上代码中的User通过继承Model,便立即拥有的众多方便的操作数据库的方法。在User中声明的dao静态对象是为了方便查询操作而定义的,该对象并不是必须的。基于ActiveRecord的Model无需定义属性,无需定义getter、setter方法,无需XML配置,无需Annotation配置,极大降低了代码量。

以下为Model的一些常见用法:

// 1.跨模块call查询ImUser
List<ImUser> users =  getEntity("ImUser").call("search", new Criteria(), 0, 0, null);
 
// 2.本模型查询ImGroupUser
ImGroupUser imGroupUsers = this.search(new Criteria(), 0, 0, null);

// 3.本模型查询一条
ImGroupUser imGroupUser =  findById(1);
// 4.更新ImGroupUser
 imGroupUser.set("userId",1);
 imGroupUser.update();

// 5.保存ImUser
new ImUser().setLogin("test").save();

2.接口参数

{
    "params":{
        "args":{
            "criteria":[["groupId.id","=",1]],
            "offset":0,
            "limit":0,
            "order":null
        },
        "app": "im",
        "service": "search",
        "model": "ImGroupUser",
        "tag": "master"
    }
}

操作符

=,!=,>,>=,<,<=, 

这些就是我们平常用的“等于”,“不等于”,“大于”,“大于等于”,“小于”,“小于等于“。

=?
 

未设置或者等于,未设置就是当值是None或者是False,其余和“=”一样。

=like

可以使用模式匹配:下划线“_”匹配一个字符,百分号“%”匹配零或者多个字符。 这里默认的匹配模式是:value(不加其他通配符)。

like

通过%value%匹配。 常用于模糊搜索(例如:搜索名字包含“123”的记录)

模块服务

模块与模块之间相互调用call的方式

List<ImUser> users =  getEntity("ImUser").call("search", new Criteria(), 0, 0, null);

模块与spring调用SpringUtils.getBean的方式

SpringUtils.getBean("");

Spring与模块调用,使用controller配置的方式

IDEA模板

get模板

#if($field.modifierStatic)
static ##
#end
$field.type ##
#if($field.recordComponent)
${field.name}##
#else
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
#if ($field.boolean && $field.primitive)
is##
#else
get##
#end
${name}##
#end
() {
return ($field.type)this.get("$field.name");
}

set模板

#set($paramName = $helper.getParamName($field, $project))
#if($field.modifierStatic)
static ##
#end
$classname set$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))($field.type $paramName) {
#if ($field.name == $paramName)
#if (!$field.modifierStatic)
this.##
#else
$classname.##
#end
#end
set("$field.name", $paramName);
return this;
}

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
3 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部