发表于: 2017-11-02 22:18:45

2 758


今天做的事:


想杀人,被折磨了一天,第一次使用公司框架写接口,果然困难重重

好在我能克制住杀意,不然可能得少不少人。


最后在我顽强的毅力下,终于把签到接口写完了。


遇到的坑挺多的,就简单的把公司框架里面的坑写一下吧,以后可以回来看看。

首先是一个工具类

DynamicUtil

里面方法是这样的:

//通过UserId获取sign的idList
public static Map<String, Object> getIdListByUserId(Long userId) {
Map<String, Object> params = new HashedMap();

   if (DataUtils.isNotNullOrEmpty(userId)) {
params.put(" sign.user_id & = ", "'" + userId + "'");
   }
params.put("@order", "create_at desc ");
   params.put("@query", " id");

   params.put("@table", " sign ");

   return params;
}


这个获取的是一个SQL语句,但不是可以用的SQL语句。


还需要使用一个方法

signService.getIdsByDynamicCondition(Sign.class, params1,0,Integer.MAX_VALUE);

类似这种,公司框架里专门针对Dynamic工具类生成的SQL问进行解析,并执行SQL文的方法,其中调用了这个方法:

SQLUtil.convert2Sql(params, 0, Integer.MAX_VALUE);

可以将params的SQL文转化为可以使用的SQL语句。


这里花了大量时间测试如何使用。


还有一个和dao配置文件关联的方法

<map name="getSignByUserId"
   sqlitem="select id from sign where user_id = ?"
   keyProperty="user_id" valueProperty="id" keyColumn="user_id" />

在实现类中这么使用

public Sign getSignByUserId(Long userId) throws ServiceException,
     ServiceDaoException {
Long id = null;
     try {
id = (Long) dao.getMapping("getSignByUserId", new Object[]{userId});
     }catch (DaoException e){
log.error(" get id  wrong by userId)  : " + userId );
        log.error(e);
        e.printStackTrace();
     }

Sign sign = this.getObjectById(id);

     return sign;
}


使用dao.getMapping方法使用dao配置文件中定义的方法。

虽然最后这个没有用上,不过以后应该会用,谁知道呢。


最后就是抛开公司框架,我在写接口遇到的一点困难或思考


获取当天零点方法

//当天零点
long zero = currentTime/(1000*3600*24)*(1000*3600*24) - TimeZone.getDefault().getRawOffset();


然后就先这样吧,记不起来别的了,最后这个逆袭豆的计算到底正不正确,忘记验证了,一会去看一下


明天计划:继续写用户相关接口


问题:都已解决


收获:使用公司框架完成了第一个接口,以及随后把签到模块全部完成,逆袭豆计算待验证,这就去验证一下



返回列表 返回列表
评论

    分享到