Skip to content
On this page

Ngbatis内置函数与变量

如何使用内置函数与变量

java
package your.domain;

public interface PersonDao {
  void insertPerson( Person person );
}
xml
<mapper namespace="your.domain.PersonDao">

  <insert id="insertPerson">
        @var kv = ng.kv( ng_args[0], '', true, true );
        @var id = ng.id( ng_args[0] );
        @var tagName = ng.tagName( ng_args[0] );
        INSERT VERTEX `${ tagName }` (
            ${ ng.join( @kv.columns, ",", "ng.schemaFmt" ) }
        )
        VALUES ${ id } : (
            ${ ng.join( @kv.values ) }
        );
  </insert>

</mapper>

此出用到了 ng.kvng.idng.tagNameng.joinng.schemaFmt等内置函数,用到了ng_args内置参数。 了解了使用的地方之后,咱们在往下的内容中,将对函数进一步介绍。

内置变量

  • ng_cm ClassModel Dao接口的类模型,便于在xml中拿到更多类信息 (1.1.0-rc)
  • ng_mm MethodModel Dao接口中某个方法的模型,便于在xml中拿到方法信息,包括入参类型。(1.1.0-rc)
  • ng_args 传入Dao接口的原始参数,未序列化前。(1.1.0-rc)

内置函数

  • ng.valueFmt

    对不定类型的数据值进行格式化,忽略是否追加单引号及日期格式化,直接传原始 java类型即可

    参数位参数说明类型是否必传默认值
    1ObjectY
    2如果是字符串是否在前后追加 .* 形成模糊查询booleanNfalse

    自 v1.1.2 起,默认对字符串类型进行转义,可使用:ValueFmtFn.setEscape( false ) 进行关闭

  • ng.schemaFmt

    对模式名前后追加 `,以避免与数据库关键字冲突

    参数位参数说明类型必传默认值
    1模式名,如 tagName, edgeName, propertyNameObjectY
  • ng.tagName

    用于从实体类或Dao接口获取 tag name

    参数位参数说明类型必传默认值
    1与Schema对应的实体类对象ObjectY
    2类模型,使用 ng_cm 传入ClassModelNnull
  • ng.pkField

    用于获取 主键属性,java.lang.reflect.Field

    参数位参数说明类型必传默认值
    1实体类类型Class<?>Y
    2如果不存在主键是否报错中断BooleanNfalse
  • ng.pkName

    用于获取 主键名,String

    参数位参数说明类型必传默认值
    1实体类对象ObjectY
    2true 时使用列名,false 时使用属性名BooleanNtrue
  • ng.entityType

    用于获取实体类类型

    参数位参数说明类型必传默认值
    1实体类对象ObjectY
  • ng.fieldNames

    获取属性名集合(不包括主键)

    参数位参数说明类型必传默认值
    1实体类对象ObjectY
    2true 时使用列名,false 时使用属性名BooleanNtrue
  • ng.id

    获取id值

    参数位参数说明类型必传默认值
    1实体类对象ObjectY
    2如果不存在主键是否报错中断BooleanNtrue
    3如果值为空,true会通过主键生成器返回新值,false 时 返回空BooleanNtrue
  • ng.kv

    通过实体对象或者获取多个集合

    • columns 列名集合
    • valueNames 属性名集合
    • values 值集合
    • types 属性类型
    参数位参数说明类型必传默认值
    1实体类对象ObjectY
    2参数名前缀StringNnull
    3是否排除主键BooleanNtrue
    4是否排除空值BooleanNtrue
    5如无主键,是否报错中断BooleanNtrue
  • ng.join

    对集合进行格式化

    参数位参数说明类型必传默认值
    1待格式化的集合IterableY
    2元素间的分隔符StringN,
    3函数名,各元素拼接前,可进行函数名指定的格式化函数先行格式化,再拼接StringNnull
  • ng.ifStringLike

    类型为字符串时,前后拼接 .*

    参数位参数说明类型必传默认值
    1ObjectY
    2属性类型ObjectNnull
    3属性名,用于不将值明文写在 ngql 中,而使用参数名,让 nebula 在参数中取值StringNnull
  • ng.include

    引用nGQL片段

    参数位参数说明类型必传默认值
    1要引用的nGQL片段ID.
    引用其他mapper的nGQL片段,片段ID前需要加上片段所在的namespace,例:your.domain.TestDao.nGQL-ID
    StringY
    2引用nGQL片段时额外的参数,在生成语句时优先使用额外参数ObjectNnull