baas首次接触

本文记录了一次使用BaaS进行连表查询的经历,探讨了在公司高度封装的BaseDao环境下,如何有效进行数据库操作。面对复杂的多表查询,作者尝试了inner join等方法,并分享了实际操作中遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录与baas的首次接触

今天在写后台接口代码的时候遇到了一些问题:

  1. 进行连表查询的时候,不知道查询语句写在哪里(公司封装的 BaseDao)功能太齐全了,以至于我的 Dao 层只继承了 BaseDao 接口 ,每个 Dao 都是空空如也。(还询问了下:这么多个表,可以只用一个公共的 Dao 吗?)
  2. 用 inner join 的话,他返回的并不是一个对象,而是你 select 出来的对象的集合,不知道该怎么下手了。

公司的代码:
对了,很多东西都封装过的,getSession 什么就别看了。

  1. DaoImpl 代码如下:
	@Override
	public Table getAuthorityGroupInfo(String groupName) {
		Session session = null;
		try {
			String queryString = "SELECT t1.authorityId ,t1.firstName,t1.firstCode,t1.secondName,t1.secondCode,t1.thirdName,t1.thirdCode FROM ym_shop_sys_authority t1"
					+ "LEFT JOIN ym_shop_sys_authority_group t2 ON (t2.authorityId = t1.authorityId AND t2.groupName ='manager')";
			List<Object> sqlParams = new ArrayList<>();
			sqlParams.add(groupName);
			session = getSession();
			java.sql.Connection conn = session.connection();
			Table t = DataUtils.queryData(conn, queryString, sqlParams, null, null, null);
			session.close();
			// Transform.tableToJson(l);
			return t;
		} catch (RuntimeException re) {
			re.printStackTrace();
			return null;
		} finally {
			if (session != null && session.isOpen()) {
				session.close();
			}
		}
	}
  1. Service 层代码:
@Override
	public Map<String, Object> getUserAuthorityInfo(String userId, String groupName) {
		if (StringEmptyUtils.isEmpty(userId) || StringEmptyUtils.isEmpty(groupName)) {
			return ReturnInfoUtils.errorInfo("请求参数不能为空!");
		}
		Table table = authorityDao.getAuthorityGroupInfo(userId, groupName);
		if (table == null) {
			return ReturnInfoUtils.errorInfo("查询失败,服务器繁忙!");
		} else if (!table.getRows().isEmpty()) {
			List<Row> lr = table.getRows();
			return baleUserAuthorityInfo(lr);
		} else {
			//
			Table table2 = authorityDao.getAuthorityGroupInfo(groupName);
			if (table2 != null && !table2.getRows().isEmpty()) {
				List<Row> lr = table2.getRows();
				return baleUserAuthorityInfo(lr);
			} else {
				return ReturnInfoUtils.errorInfo("查询失败,服务器繁忙!");
			}
		}
	}

下面三个类:
com.justep.baas.data.Table
com.justep.baas.data.DataUtils
com.justep.baas.data.Row
都是来自于 baas。

三分钟了解什么是 BaaS

回答:

  1. 公司果然封装了一个公共 Dao 。。。。
  2. 用 baas 就行了,可以 根据行和列来查询查找到的表对象。但是其实自己写一个查询两次的查询比连表查询更好一点,这个返回的值类似于一个数组,还需要手动解析(列的组合更方便),但是两次查询反而可以返回其中一个对象。需要看实际需求了。
05-09
### 关于BaaS(Backend as a Service)架构 BaaS(Backend as a Service)是一种软件架构模式,在移动互联网和云计算时代变得越来越流行[^2]。它通过提供封装好的后端服务来帮助开发者快速构建应用程序,而无需关注底层基础设施的复杂性。 #### BaaS的主要特点 1. **简化开发流程** 开发者只需专注于前端逻辑和业务功能的设计与实现,而后端的核心功能如用户认证、数据存储、推送通知等则由第三方服务商托管并维护[^2]。 2. **无服务器化趋势** 随着Serverless计算模型的发展,特别是FaaS(Function as a Service)的引入,进一步缓解了BaaS全客户端逻辑带来的局限性。通过将部分自定义逻辑迁移至轻量级的服务端组件中,可以有效减少安全风险和性能瓶颈[^1]。 3. **自动化的扩展能力** 在基于FaaS的环境中,所有的横向扩展都是全自动完成,并且具备高度弹性的特性。当面对突发流量增长时,系统能够自然应对多个并发请求而不需额外配置资源分配策略[^3]。 4. **便捷的应用部署方式** 使用FaaS平台进行应用发布非常简单快捷,通常只需要上传打包后的代码文件并通过API接口触发版本更新操作即可。整个过程中涉及的所有细节均由供应商负责处理完毕[^3]。 5. **丰富的生态系统支持** 当前正处于一个技术迅速革新的时期,除了传统的IaaS/PaaS/SaaS之外还有诸如容器即服务(CaaS),微服务框架等多种新兴概念不断涌现出来共同推动行业发展向前迈进一大步[^4]。 综上所述可以看出,BaaS不仅极大地降低了初创团队进入市场的门槛同时也为企业提供了更加灵活高效的解决方案选项. ```python def upload_code_to_faaas_platform(code_package_path): import requests url = 'https://faaas-platform.com/api/upload' with open(code_package_path,'rb') as f: r=requests.post(url,files={'file':f}) if r.status_code==200: activate_update() def activate_update(): api_key='your_api_key_here' endpoint=f'https://faaas-platform.com/api/activate?key={api_key}' response=requests.get(endpoint) return response.json() upload_code_to_faaas_platform('./my_function.zip') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值