博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jfinal接口开发的一些要点
阅读量:6717 次
发布时间:2019-06-25

本文共 2941 字,大约阅读时间需要 9 分钟。

hot3.png

service端:

BaseResponse对象描述返回格式,如:

{  "code": 1,  "message": "成功查询到该用户信息",  "data": {    "name": "wuliao",    "lover": "rose",    "sex": 1,    "email": "wuliao@gmail.com"  }}

 

DatumResponse与DataResponse继承BaseResponse对象分别用来包装单个对象与对象list;

修改Model类增加新方法:

public DatumResponse getById(String id){     DatumResponse response = new DatumResponse();     M modelClass = null;        if (StringUtil.isNotEmptyOrNull(id))          modelClass = findById(id);        if (modelClass == null) {            response.setCode(Code.FAIL).setMessage(getClass().getName()+" is not found");        } else {            response.setDatum(modelClass);        }     return response;    }        public DataResponse getList(String sql, Object... paras){     DataResponse resp = new DataResponse();  List
result = null; if (paras!=null) result = find(sql,paras); if (result == null || result.size() == 0) { resp.setMessage("未查询到数据"); } else { resp.setMessage("success"); resp.setData(result); } return resp; } public DatumResponse getFirst(String sql, Object... paras){ DatumResponse response = new DatumResponse(); M modelClass = null; if (paras!=null) modelClass = findFirst(sql, paras); if (modelClass == null) { response.setCode(Code.FAIL).setMessage(getClass().getName()+" is not found"); } else { response.setDatum(modelClass); } return response; }

 

    在controller中返回封装对象即可,如:

/**     * 根据id号查询单个用户     */ public void getEmp() {     renderJson(Emp.dao.getUserById(getPara("userId")));    }    /**     * 查询某机构用户列表     */    public void getUserListOfOrg() {     renderJson(Emp.dao.getUserListOfOrg(getPara("orgId")));    }

 

portal端:

主要是jackson的解析需要注意ObjectMapper的一些设置,如:

ObjectMapper objectMapper = Jackson.getJson().getObjectMapper();        objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);        objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);        objectMapper.setSerializationInclusion(Include.NON_NULL);        objectMapper.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));                            objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);        objectMapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);

 

另一点需要注意的是单对象的转换与list的对象转稍有差异:

单对象:

return objectMapper.readValue(jsonString, type);

 

对象list:

TypeFactory t = TypeFactory.defaultInstance();return objectMapper.readValue(jsonString,t.constructCollectionType(ArrayList.class,type));

 

 

 备注:参考了空谷幽兰的设计,TKS

转载于:https://my.oschina.net/u/568367/blog/669202

你可能感兴趣的文章
C#实现秒表程序
查看>>
P4377 [USACO18OPEN]Talent Show
查看>>
多线程 售票 (同步)
查看>>
cJSON 使用笔记
查看>>
CF1163E Magical Permutation
查看>>
指针与数组区别
查看>>
showModalDialog关闭子窗口,并刷新父窗口
查看>>
我的Java开发学习之旅------>解惑Java进行三目运算时的自动类型转换
查看>>
【我的Android进阶之旅】解决strings.xml格式化占位符错误: Multiple substitutions specified in non-positional format...
查看>>
测试工程师常用的工具
查看>>
【已解决】如图,说我磁盘不够,看到var目录下有的个隐藏文件夹占了46G,不知道怎么删除...
查看>>
vmware网络的连接方式
查看>>
AngularJs的UI组件ui-Bootstrap分享(五)——Pager和Pagination
查看>>
Python基础21_类与类型, MRO, C3算法, super()
查看>>
IBM磁盘阵列及文件系统的管理
查看>>
Algs4-2.1.34罕见情况
查看>>
jQuery的属性操作
查看>>
BroadcastReceiver
查看>>
Python学习-字典的常见用法
查看>>
Python 异常处理
查看>>