zhangweixin 670d6425fd 调整生成代码 | vor 4 Jahren | |
---|---|---|
.. | ||
img | vor 4 Jahren | |
src | vor 4 Jahren | |
README.md | vor 4 Jahren |
::: details 目录 [[toc]] :::
::: details 查看代码 <<< @/docs/dev/lib/coding/src/PropertyController.kt :::
标准的通用接口,增删改查统计
修改接口支持级联修改,例如修改设备信息,同时修改设备所在的业务空间信息,修改业务空间对应的竖井信息,修改设备对那个的部件的部件信息,支持 n 级修改
SQueryRequest 请求体基类,所有的标准接口都是用相同的基类,分页、去重 、分组、排序、级联查询 、操作符关系符查询,指定返回属性查询,设置请求返回最大数 ::: details 查看代码 <<< @/docs/dev/lib/coding/src/SQueryRequest.kt :::
SQueryResponse 查询应答基类 返回数据包括 请求页码 请求条数,符合条件的总数量,数据列表 继承自 SBaseResponse 返回成功标志
::: warning 注意 控制类中只写基本的接口函数定义,不允许有逻辑代码,控制类只做接口定义以及说明 :::
这里入参使用Property::class.java是因为泛型在编译时使用,运行时泛型信息将被擦除
SObjectService 提供的标准增删改查统计,都可以在执行前或执行后做相应大逻辑操作,定义一个 BuildingService 继承自 SObjectService 然后在 BuildingService 重写对应的函数例如:
自定义方法,然后调用 SObjectService 提供的 select insert replace update delete ```metadata json fun equipInfo(building: Building){
// 插入数据
insert(building)
// 替换,有则替换,无则创建
replace(building)
// 更新
update(building)
// 删除
delete(building)
// 查询
select(SFilter.eq("id","123456")).entity()
} // Fun ```
insert 插入,直接传入插入的数据会返回 Boolean 布尔值 false 或 true,传入的对象一定是 BuildingService 注解一致的 ```metadata json
// 插入数据
val insert = insert(building)
```
replace 替换和插入一样返回布尔值,是否成功传入对象也相同
update 同样会返回布尔值,传入的对象一样,也可以输入条件更新,或只更新某一个或某几个属性 ```metadata json
// 更新
update(building)
// 根据条件更新
update(building,null, SFilter.eq("projectId","Pj1101060001"))
// 指定更新属性
update(building, arrayListOf("name"), SFilter.eq("projectId","Pj1101060001"))
```
delete 删除 可以指定条件传出,也可以直接删除某一个对象
```metadata json
// 删除
delete(building)
//指定条件删除
delete(SFilter.eq("equipId","Eq110106000145984513212132"))
// 多条件删除
delete(SFilter.eq("name","大厦"),SFilter.eq("type",1))
* select 查询可以多条件组合,利用下面要介绍的表达式、逻辑表达式、函数。
```metadata json
// 查询 单条件,可以在 BuildingService类外调用 如下
BuildingService.select(SFilter.eq("id","123456")).exec()
// entity 代表返回单条数据 exec 返回一个列表
// 多条件查询
select(SFilter.eq("name","123456"),SFilter.eq("projectId","Pj1101060001")).exec()
| 关系 | 后台语法 | |:--:|:--:|:--:| | 等于 | SFilter.eq(“属性名”, 值) | | 不等于 | SFilter.ne(“属性名”, 值) | | 大于 | SFilter.gt(“属性名”, 值) | | 大于等于 | SFilter.gte(“属性名”, 值) | | 小于 | SFilter.lt(“属性名”, 值) | | 小于等于 | SFilter.lte(“属性名”, 值) | | 包含 | SFilter.contain(“属性名”, 值) | | 前缀 | SFilter.startwith(“属性名”, 值) | | 后缀 | SFilter.endwith(“属性名”, 值) | | 为空 | SFilter.isnull(“属性名”) | | 在列表内 | SFilter.inList(“属性名”, arrayList(值1, 值2, ...)) |
metadata json
BuildingService.select(SFilter.eq("id","123456")).exec()
逻辑 | 后台语法 |
---|---|
非 | SFilter.not(表达式) |
与 | SFilter.and(表达式1, 表达式2) |
或 | SFilter.or(表达式1, 表达式2) |
metadata json
BuildingService.select(SFilter.or(SFilter.eq("type","1"),SFilter.eq("type","2"))).exec()
函数 | 说明 |
---|---|
SLeft(属性名, 长度) | 字符串左截取 |
SLength(属性名) | 取字符串长度 |
SLower(属性名) | 字符串转换为小写 |
SLPad(属性名, 长度, 填充字符) | 左填充字符串 |
SMid(属性名, 开始位置, 长度) | 从指定位置截取批暄长度字符串 |
SReverse(属性名) | 字符串逆序 |
SRight(属性名, 长度) | 字符串右截取 |
SRPad(属性名, 长度, 填充字符) | 右填充字符串 |
SSubstring(属性名, 开始位置, 长度) | 从指定位置截取批暄长度字符串 |
SUpper(属性名) | 字符串转换为大写 |
示例 :查询名称长度等于4个字符
BuildingService.select(SFilter.eq(SLength("name"),4)).exec()
标准化 实体类、接口类 ,减少开发工作量,以及开发代码量