Closed ZhangJinzhaoGit closed 1 year ago
两个问题问一下:
这种好像不支持吗?
谢谢!
两个问题问一下: 1.
这种好像不支持吗?
如果tagQuery在 dao 中使用了 @Param("tagQuery")
可以试试:where id in $tagQuery.idList
- 在返回对象里我用String接受一个id好像会报错?不能用字符型来接受数字吗?
类型的限定会比较严格,目前不支持用String来接收数字类型的值
我想在if里面判断一个数组的长度大于0或者不为空可以吗
如果Dao实现了 NebulaDaoBasic 接口,可以直接调用 dao.selectByIds( idList ) 不需要再编写 xml 内部xml的实现如下:
<select id="selectByIds">
match (n: `${ ng.tagName( ng_args[0], ng_cm ) }`)
where id(n) in [ ${ ng.join( @ids, ", ", "ng.valueFmt" ) } ]
return n
</select>
我想在if里面判断一个数组的长度大于0或者不为空可以吗
可以的:
@if (isNotEmpty(tagQuery.idList) ) {
<!-- 不为空时需要实现的内容 -->
@}
可以在 yml 当中添加:
logging:
level:
org.nebula.contrib: DEBUG
where id in $tagQuery.idList 我使用上面这种好像并没有生效
然后我换成 where id(n) in [ ${ ng.join( @ids, ", ", "ng.valueFmt" ) } ] 这样,好像会报错无此属性
方便贴一下 Dao 方法的声明吗
还有 ng.join 这个方法只能对String的数组使用吗,对Long的数组可以使用吗?谢谢!
ng.join List<Long>
、List<String>
都可以使用
不好意思,刚刚这里写错了,tagQuery 前面需要用 @
符来标记是个 java 对象
@if ( isNotEmpty( @tagQuery.idList) ) {
<!-- 不为空时需要实现的内容 -->
@}
我发现不加@是好的,加了就会报错,说找不到这个。。
然后ng.join我在使用的时候,如果是List<Long>
会报错
然后ng.join我在使用的时候,如果是
List<Long>
会报错
如果是数字可以把 ng.join 的第三个参数 "ng.valueFmt"
去掉
可以了,感谢,最后一个问题问一下
MATCH p=(v:tag01) -[e:edge01*1..1]-(v2:tag01)
我想里面的某一个值是变量,支持吗
MATCH p=(v:tag01) -[e:edge01*1..$tagQuery.length]-(v2:tag01)
这样会报语法错误
可以用:MATCH p=(v:tag01) -[e:edge01*1..${tagQuery.~size}]-(v2:tag01)
或者:MATCH p=(v:tag01) -[e:edge01*1..${@tagQuery.size()}]-(v2:tag01)
可以用:
MATCH p=(v:tag01) -[e:edge01*1..${tagQuery.~size}]-(v2:tag01)
或者:MATCH p=(v:tag01) -[e:edge01*1..${@tagQuery.size()}]-(v2:tag01)
length是tagQuery这个类的一个成员变量
哦哦,大意了
MATCH p=(v:tag01) -[e:edge01*1..${tagQuery.length}]-(v2:tag01)
${ 变量名 }
是执行到数据库前读取的,
$变量名
是执行到数据库后,由数据库获取的
如果 nebula 的多跳能支持参数的方式,上面的语句可以用 $tagQuery.length 来替代
可以了,感谢!
ng.join 的方法签名:
public String call(Iterable<?> iterable, String sep, String fnName)
按理List<Long>
也应该支持 ng.valueFmt
,也感谢你帮忙发现了一个 ng.join
的 bug。
如题,谢谢!