dao层mysql复合语句_在业务中是使用多个Dao组合好,还是一个链接查询好?
问题描述
假如目前有一个查询用户详情的接口
用户基础表关联了很多用户其他信息的表,现在要把所有查询出来,是使用多个dao在service中组合,还是直接链接查询好
示例代码
用户表(user_base)
用户信息表1(user_info_1)
用户信息表2(user_info_2)
用户信息表3(user_info_3)
...
用户信息表n(user_info_n)
多个dao查询返回
@Service
public class UserDetailServiceImpl implements UserService{
@Autowired
private UserBaseDao userBaseDao;
@Autowired
private UserInfoDao1 userInfoDao1;
@Autowired
private UserInfoDao2 userInfoDao2;
@Override
public UserInfoVo getDetail(String userId){
UserInfoVo userInfoVo = new UserInfoVo ();
// 多个dao获取相关要返回的信息
UserBase userBase = userBaseDao.getByUserId(userId);
UserInfo1 userInfo1 = userInfoDao1.getByUserId(userId);
UserInfo2 userInfo2 = userInfoDao2.getByUserId(userId);
// 最后返回的VO类各种set信息返回给前台
userInfoVo.set(dao1返回结果);
...
...
userInfoVo.set(daoN返回结果);
return userInfoVo ;
}
}
链接查询
@Service
public class UserDetailServiceImpl implements UserService{
@Autowired
private UserBaseDao userBaseDao;
@Override
public UserInfoVo getDetail(String userId){
// 单个dao内用链接查询返回一个VO类
UserInfoVo userInfoVo = userBaseDao.getDetail(userId);
// 查询的sql伪代码
String sql =
"select '要返回字段' from user_base
left join user_info_1 on user_base.user_id = user_info_1.user_id
left join user_info_2 on user_base.user_id = user_info_2.user_id
...
left join user_info_n on user_base.user_id = user_info_n.user_id
where user_base.user_id = :userId";
// 这里就可以省略各种set
return userInfoVo ;
}
}
相关疑问
使用第一种多个Dao组合返回数据,在Service层各种set虽然要复杂一些,但感觉上,耦合性没有那么高,各个部分dao都很独立,也可以在其他地方复用
使用第二种方法,除了要自己手写很长的sql语句,Service层的处理要简单很多。但复用性不够
希望能基于相关程序设计思想上,对这两种方式的选择给予相关的解答,或者有其他设计实现方法。不胜感激
dao层mysql复合语句_在业务中是使用多个Dao组合好,还是一个链接查询好?相关推荐
- 中service层的作用_浅析Java中dto、dao、service、controller的四层结构
目前我所在的项目组采用的是SpringBoot框架,前端使用BootStrap+jQuery. SpringBoot是BS开发框架之一,不用单独开启tomcat服务器,目前比较流行,一般开发大型项目时 ...
- dao层通用封装_层超类型模式:封装多层系统中的通用实现
dao层通用封装 Being one of the cornerstones of OOP, Inheritance is pretty much like a doubled-sided door ...
- centos 7 mysql随机密码_在centos中安装了mysql5.7之后解决不知道随机的密码的问题...
在安装完成mysql5.7 之后,发现密码不知道.不要紧,直接重置密码. 1.修改配置文件my.cfg [root@localhost ~]# vi /etc/my.cnf 找到mysqld在之后添加 ...
- kubernetes中mysql乱码_在kubernetes中部署tomcat与mysql集群-Go语言中文社区
在kubernetes中部署tomcat与mysql集群之前必须要有以下这些基础: 1. 已安装.配置kubernetes 2. 集群中有tomcat与mysql容器镜像 3. 有docker基础 具 ...
- opensips mysql 认证_基于ubuntu中使用mysql实现opensips用户认证的解决方法
1 MySQL支持 1.1 MySQL模块支持 默认安装时,不包含MySQL模块. opensipsctlrc文件中包含了数据库配置的信息,要想让opensips支持mysql数据库,在编译安装的时候 ...
- dapper mysql 预处理_.Net Core中Dapper的使用详解
Dapper 是一个轻量级ORM框架,在项目中如果对性能比较看中,Dapper是一个不错的选择.接下来我们就来看看如何在项目中使用Dapper. 1.安装Dapper 这里直接使用Nuget安装. 安 ...
- mac mysql使用_在Mac中安装和使用MySQL
下载安装MySQL 在官网下载MySQL 进入官网后可以看到有多个版本可选: Oracle MySQL Cloud Service 基于企业版数据库的云服务 MySQL Enterprise Edit ...
- php mysql 迁移_将phpstudy中的mysql迁移至Linux教程
项目目的 将原来windows环境中使用phpstudy搭建的mysql 5.5.53 中的数据迁移至新主机Linux环境中 环境情况 新主机 系统平台: CentOS release 7.4 (Fi ...
- php mysql 失败_在php中插入失败的数据mysql
我需要将记录添加到表'文字'中.正如您在下面的代码中看到的那样,失败会导致消息data insert failed.在php中插入失败的数据mysql 我已经试图改变一切,在线论坛建议,但它没有帮助. ...
最新文章
- spark-shuffle分析
- hdu 2049 不容易系列之(4)——考新郎 解题报告
- 系统中多种隐藏超级用户添加方法第1/2页
- JDK1.8 Lambda 使用详解(转)
- spring boot整合freemarker及freemarker基础语法超详细讲解
- CF442C-Artem and Array【贪心】
- 【VC++技术杂谈005】如何与程控仪器通过GPIB接口进行通信
- python2.7升级到python3.6注意事项
- linux7自动挂载怎么做,centos 7 实现自动按需挂载
- 矩阵、优化理论常用记号
- 软考数据库系统工程师day01
- MSP430G2553学习笔记
- 用计算机画统计图,统计图
- sparc处理器开发工具_SPARC高性能处理器集成开发环境及其编译器设计与实现
- Python爬虫实例--新浪热搜榜[xpath语法]
- C++模拟手机调查问卷
- Amdahl定律(阿姆达尔定律)
- 高一计算机专业学期总结,高一计算机学期工作总结
- 解决 Nacos 服务注册使用 Docker 容器内网 ip 问题
- 荣耀android手机怎么截图,华为荣耀畅玩5C怎么截图/截屏方法教程
热门文章
- Redis 服务安装
- 004-docker常用命令[二]-容器操作ps,top,attach,export
- bzoj 2296: 【POJ Challenge】随机种子
- python 装饰器 三 (带有参数的装饰器)
- 【整理】fiddler不能监听 localhost和 127.0.0.1的问题
- android 多线程概述
- 2011阿里巴巴程序设计公开赛 / 1002 Fruit Ninja
- 学习笔记----linux下编译samba
- SBO部分SQL查询奉献
- leetcode面试题 17.07. 婴儿名字(并查集)