JavaWeb项目,DAO应该怎么写?


有一张字段足够多的表,要对它进行各种各样的查询:
根据字段A根据字段B,或者根据字段A和B,或者再加上字段C,然后可能还要加上分页,排序等等的逻辑。
现在的项目的DAO层为了满足上面这些需要出现了很多参数列表很长的方法,神烦不已。

最初想到的是类似Hibernate的QBE方式,传给DAO一个实体类对象,但是一个实体类对象不能描述“范围”,更不用说用到IN的查询。
后来想到抽象出一种“查询”类,封装一些查询条件。个人感觉这个解决方案可行,但是遇到了很多问题,比如可能会把表结构直接暴露给Service,对于一些特别复杂的查询难以描述出来等等。
那么问题来了,DAO应该怎么写,或者说,Service应该传给DAO什么?

hibernate java dao mybatis javaweb

穆遥的天空 9 years, 3 months ago

Spring JPA把数据库操作这一层叫做repostory咯,注解也是repostory嘛。接口定义了常用的curd方法。

红魔馆的蛋糕 answered 9 years, 3 months ago

dao层是持久层,是对数据库的增删改查,service是服务层,是从业务的角度去考虑方法的定义!比如一个service层的方法叫下订单,这个方法就涉及到好几个dao层的方法!

xiao@W answered 9 years, 3 months ago

用mybatis吧,自动生成的dao完全满足

东京小太刀 answered 9 years, 3 months ago

Dao中需要什么参数 Service就传入啥。不需要很长的入参列表,构建一个queryparam对象即可。

经典的KOF answered 9 years, 3 months ago

Your Answer