Skip to content
On this page

使用基类读写

创建一个 Person 对应的 DAO,并继承 NebulaDaoBasic

java
package your.domain;

import  org.nebula.contrib.ngbatis.proxy.NebulaDaoBasic;

public interface PersonDao extends NebulaDaoBasic<Person, String> {

}

创建一个名为 PersonDao.xml 的文件,默认位置为:/resources/mapper

xml
<mapper namespace="your.domain.PersonDao">

</mapper>

在 Service 层中举例

java
@Service
public class PersonServiceImpl {

  @Autowired private PersonDao dao;

  // 全属性写入,如果对应的 id 已存在,放弃写入
  public void insert( Person person ) {
    dao.insert( person );
  }

  // 仅写入非空属性,如果对应的 id 已存在,放弃写入
  public void insertSelective( Person preson ) {
    dao.insertSelective( person );
  }

  // 此处,Person 的主键栏 name 为 String ,则入参为 String
  public Person selectById( String id ) {
    return dao.selectById( id );
  }

  // 按属性查询
  public List<Person> selectBySelective( Person person ) {
    return dao.selectBySelective( person );
  }

  // FIXME 当前版本,这个接口尚不是逻辑删除,待修改。
  public void deleteLogicById( String id ) {
    dao.deleteLogicById( id );
  }

  // 确立两个节点的关系,两个节点需要在数据库中存在。
  public void insertEdge( Person tom, Like like, Person jerry ) {
    dao.insertEdge( tom, like, jerry );
  }

  // 确立两个节点的关系,两个节点需要在数据库中存在。
  // 此接口,同样使用于,两个节点间可以创建多条关系的情况。
  // 是否可以创建多条关系,取决于第 2 个参数是否有 @Id 的栏位
  public void insertEdge( Person tom, LikeWithRank like, Person jerry ) {
    dao.insertEdge( tom, like, jerry );
  }

  // Page 为 {@link org.nebula.contrib.ngbatis.utils.Page}
  public List<Person> selectPage( Page<Person> page ) {
    return dao.selectPage( page );
  }

  // 判断两个节点是否存在某种关系
  public boolean existsEdge( String startId, Class edgeType, String endId ) {
    return dao.existsEdge( startId, edgeType, endId );
  }

  // 查找一个节点某种关系中的所有上游节点
  public List<Person> listStartNodes( Class edgeType, String endId ) {
    return dao.listStartNodes( edgeType, endId );
  }

  // 查找一个节点中,某种关系的唯一一个上游节点
  public Person startNode( Class edgeType, String endId ) {
    return dao.startNode( edgeType, endId );
  }

}