首页 新闻 会员 周边

关于分层的问题,参数传递的矛盾。

0
悬赏园豆:20 [已关闭问题] 关闭于 2016-12-12 10:12

我们项目使用的是mvc分层。使用的是idea编译器,将项目分为了biz(service层),dal(dao层),web(controller和jsp)这三部分。使用的是ssm框架开发。mybatis反转工具生成的实体类为xxxDO,为了便于搜索有xxxDOExample。假设拓展实体类为xxxCustom。表现实体类为xxxVO。web中有一个form的包里面xxxForm类表示每个表单的需要的信息的包装类。

分层之后一般是下层依赖与上层而上层不能依赖下层,好像是便于拆装。比如在dao中不能使用xxxForm这个类。

 

现在我要做一个简单的高级查询,连接了多个表。直接XXXExampleMapper的话只能操作单表,我可以手写mapper,然后返回的对象是一个vo,传递进来的对象应该是什么?Form是不可以的,本来我打算传递进去也是vo,然后比如startDate和endDate就需要增加,我可以在biz层增加model包中的类xxxModel作为传递的参数类型。但是我感觉这样的话biz受到web限制,重复代码类too多。

还有一种思路就是传递到service的信息接收到的时候是xxForm,在controler中拆分成service需要的model,。。。。从service中得到的对象在Controller中包装然后传递到表现jsp。恶心。。。。。

 

有点乱,就是感觉有点乱。你们的分层与参数传递,ssm应用的时候mybatis自动生成mapper和自定义mapper怎么处理的。我们的自定义mapper和包装类都不能在原来的上面添加或修改为了防止覆盖。还有pojo怎么玩的。谢谢!给个建议和对比。

问题补充:

关于工具生成的对应表的bean,和service中使用的对应表的bean,和mapper.xml中的parameterType对应的bean(查询条件有时不仅仅在一个表bean内),mapper.xml的resultMap的对应的bean。要分层,易拆装。

guodaxia的主页 guodaxia | 初学一级 | 园豆:87
提问于:2016-12-07 15:21
< >
分享
所有回答(1)
0

你是意思是web层访问不到dao的po对象,那你可以在web层自定义一个DTO啊,把查询出来的po对象在service层converter成DTO(就是你页面需要的包装类)。

让我发会呆 | 园豆:2929 (老鸟四级) | 2016-12-08 13:16

我的意思是dao不能访问web定义的对象,dao也不能访问service的对象,service不能使用web的对象,web是最底层。

支持(0) 反对(0) guodaxia | 园豆:87 (初学一级) | 2016-12-08 17:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册