我们项目使用的是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。要分层,易拆装。
你是意思是web层访问不到dao的po对象,那你可以在web层自定义一个DTO啊,把查询出来的po对象在service层converter成DTO(就是你页面需要的包装类)。
我的意思是dao不能访问web定义的对象,dao也不能访问service的对象,service不能使用web的对象,web是最底层。