Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
423 views
in Technique[技术] by (71.8m points)

service层逻辑设计

求助各位大神
1、service层直接返回数据表实体类还是DTO类型呢?目前在使用mybatis plus做数据库ORM,pageHelper做数据库查询分页拦截,如果service层返回的是dto,那pageHelper封装的包含分页信息的list就会丢失(启用pageHelper之后,dao返回的List其实是继承ArrayList的Page),该如何处理?
2、service层调用dao层进行update操作的时候,是否需要先根据id查询数据是否存在再进行更新呢?单个更新还好,如果是批量更新会影响效率速度吗?
非常期待感谢各位大神的回复。谢谢!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
  1. Service 层返回的应该是业务对象模型也就是 BO,既不应该是DTO也不应该是DAO。关于网络的分层架构设计可以参考我的博客文章 https://www.zhoutao123.com/page/book/architect/category/aqm5lr
  1. 首先讲一下这两个更新的方式的区别
  • 第一种方式,首先查询到ID,比如select id from xxxx where xxxx这里的查询只涉及到id字段,因此不会发生回表。然后使用id更新 update xxxx set xxxx = 'xxxx' where id in( xxx,xxx)
  • 第二种方式是 直接使用update更新

两者的本质都是一样的,都会发生锁表,但是第一种方式多了从数据库——> 客户端->数据库的时间,所以个人建议还是第二种方式比较合适


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...