WEB开发的套路——非直连数据库下的数据访问

直连数据库的环境下,如何进行数据库访问呢?

下面是使用数据代理进行数据访问的示例代码,分享在此。


(1)是服务层:服务层通过UID获取用户POJO:

	/**
	 * 通过UID获取用户详情
	 * @param uid
	 * @return
	 */
	public User getUserById(String uid) {
		
		Hashtable<String, String> ctx_params = new Hashtable<String, String>();
		ctx_params.put("p1", uid);
		//获取数据结果
		FsResult result = proxyDatasetService.getSingle("get_user_details_by_id", ctx_params);
		//判断结果状态
		if(result.getStatus() != FsSpec.STATUS_OK) {
			return (null);
		}
		//转换成POJO实例
		User pojo = null;
		JSONObject obj = (JSONObject)result.getContents();
		pojo = User.fromJson(obj);		
		
		return (pojo);
	}

(2)是POJO定义的静态方法,从JSON对象生成POJO实例:

    /**
     * 从JSON对象生成P0JO实例
     * @param obj
     * @return
     */
	public static User fromJson(JSONObject obj) {
		if(obj == null) {
			return (null);
		}
		
		ObjectMapper objMapper = new ObjectMapper();
		objMapper.setDateFormat(new SimpleDateFormat(FsFormatUtil.Pattern_Date) );
		User pojo = FsJsonUtil.getInstance().json2Entity(objMapper, obj, User.class);
		
		return (pojo);
	}
(3)是(1)中的代理层获取数据的方法:

	/**
	 * 代理获取单条记录
	 * @param ds_id			数据集标识
	 * @param ctx_params	上下文参数
	 * @return			数据记录结果
	 */
	public FsResult getSingle(String ds_id, Hashtable<String,String> ctx_params) {
		
		ctx_params.put("ds_id", ds_id);
		//通过数据服务平台提供的客户端工具调用远程接口
		FsResult result = client.getSingle(appProperties.getHost(),
						  appProperties.getPort(),
						  appProperties.getDomain(),
						  ctx_params);
		return (result);
	}

(4)是数据服务平台对(1)中数据接口的定义,通过配置来完成:


结语:

通过配置定义数据接口,服务层通过代理服务访问数据接口并获取数据结果并转换成POJO实例。

过程清晰,代码简单,是不是值得圈点呢。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值