自定义nGQL
使用此方式的时候,对 nGQL、cypher 的熟悉度要求会高一些。还不太熟悉的开发者,可以通过【什么是nGQL】进行了解。
另外提一下:这边使用的模板引擎是Beetl
diff- <%if ( aBool ) { - - } %> + @if ( aBool ) { + + @}
与使用基类读写相同,需要编写一个 XXXDao.java 文件与 XXXDao.xml 文件。
新建文件
创建一个Person对应的Dao,如果不需要用到基类方法,可以不继承 NebulaDaoBasic
java
package your.domain;
import org.nebula.contrib.ngbatis.proxy.NebulaDaoBasic;
public interface PersonDao {
}
创建一个名为 PersonDao.xml 的文件,默认位置为:/resources/mapper
xml
<!-- 如果 space 与 yml 中声明的一致,可不写 -->
<mapper namespace="your.domain.PersonDao" space="test">
</mapper>
XXXDao.java 无需经过 @Mapper 或者 @Component 进行注解,而是通过 namespace 进行发现,并自动注册成 Bean。 前提是:namespace 需要在 @SpringBootApplication 注解下的 scanBasePackages 值中。 如:@SpringBootApplication( scanBasePackages = { "your.domain", "org.nebula.contrib" } )
如何让 java 程序通过 ngbatis 执行 nGQL | cypher
以一个简单的查询语句为例
在 PersonDao.java 中追加接口
java
Integer select1();
目前版本中,接口的返回值类型与方法参数类型,如果是基本类型,仅支持包装类,如 int 请写成 Integer。
在 PersonDao.xml 中新增一个标签
xml
<!-- 如果 space 与 yml 中声明的或 mapper 的 space 一致,可不写 -->
<select id="select1" space="test">
RETURN 1
</select>
Integer result = personDao.select1(); // result : 1