Rapae 弱化DAO的一种方法

        可怜的DAO层已经被各位大侠蹂躏得体肤完肤了,从范型DAO一直被蹂躏到现在只剩下一个可怜巴巴的接口,无不体现Java人追求敏捷开发的热情。其实,DAO层本来的作用就应该自从Hibernate一类优秀的ORM框架诞生之日起就应该消失灭迹了的。既然如此,那么我们就毁灭得更彻底一点。

 

下面是我对Service与DAO层整合的一些构想

 

约定优先于配置
一、Rapae代理接口标签定义

query属性:查询语句或者命名查询名称
  1. 不止由一个单词组成时:简单查询语句
  2. 由单个单词组成时:为命名查询,名称规则为[query的值]
  3. 为默认值""时:为命名查询,名称规则为[类名.方法名]
count属性:用于统计个数的查询语句或者命名查询名称,固定返回为一个Long型的数据
  1. 不止由一个单词组成时:简单查询语句
  2. 由单个单词组成时:为民命查询,名称规则为[count的值]
  3. 为默认值""时:自动生成count(*)语句
    • query为语句查询时:count自动生成为语句查询,规则为:select count(*) + query从第一个from开始到语句结束
    • query为命名查询时:count自动生成为命名查询,规则为:[query命名查询名称_count]
PS:当接口的方法没有Rapae注释的时候,按query与count均属于默认值情况处理








二、Pagination翻页注释

注释定义:
  1. FirstResult注释:方法级上的Annotation,它标记了分页查询时所要知道的第一条记录所在的位置。期待的类型为int
  2. MaxSize注释:方法级上的Annotation,它标记了分页查询时所要知道的每页最大查询记录数。期待的类型为int
  3. Total注释:方法级上的Annotation,它标记了分页查询后返回的总数统计。期待的类型为long
  4. Result注释:方法级上的Annotation,它标记了分页查询后返回的结果。期待的类型为java.util.Collection<E>
详细说明:
  1. 分页查询时:第一个参数必须是能同时提供有FirstResult和MaxSize注释方法的类,并且方法期待的返回类型都必须匹配,否则将会抛出异常。Rapae通过调用被标注的方法来进行分页查询。
  2. 分页查询返回时:返 回的类必须同时提供有Result和Total注释的方法,参数个数为1,并且期待的类型都必须匹配,否则将会抛出异常。与此同时,若返回的类同时还能提 供FirstResult、MaxSize注释的方法,方法的参数个数为1且为期待类型,那么Rapae在分页查询完成后将查询用到的 FirstResult、MaxSize值原封不动的通过标注的方法设回给返回类。






三、CRUD基本查询注释

注释定义:
  1. Create注释:格式 T [方法名] (T t);
  2. Read注释:格式 T [方法名] (java.io.Serializable pk);
  3. Update注释:格式 T [方法名] (T t);
  4. Delete注释:格式 T [方法名] (java.io.Serializable pk);
一旦被标注上了CRUD标签,则必须严格遵循标签所规定的格式,否则抛出异常。






四、查询行为方式与方法的返回类型、参数类型、参数个数以及方法名称之间的约定

查询行为方式:
  1.  
    1. 执行查询
      • 返回值必须为void
    2. 查询多条记录(不翻页)
      • 返回值是java.util.Collection<E>的实现
    3. 查询多条记录(翻页)
      • 返回类必须同时提供标注有Result与Total的方法,并且参数个数为1,参数类型为标签所期待的类型
      • 返回类可以选择性的提供标注有FirstResult和MaxSize的方法,并且参数个数为1,参数类型为标签所期待的类型
      • 传入的第一个参数必须同时提供标注有FirstResult与MaxSize的方法,参数个数为0,返回类型为标签所期待的类型
    4. 查询单条记录
      • 返回值必须是一个对象
查询条件传递:
  1. 若是翻页查询,则参数个数至少为一个,且第一个参数必须为提供标标注有FirstResult与MaxSize的方法。
  2. 若查询条件是通过可变参或者Collection集合类进行传递的,则按顺序对查询条件进行设置
  3. 若查询条件是通过参数列表直接传递进来的,则按参数列表定义的顺序对查询条件进行设置
  4. 若查询条件是通过Map传递进来的,则可通过Map对参数的参数进行设置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值