文档章节

jFinal生成动态条件的工具类中需要用到的几个方法

h
 helloyangxp
发布于 2014/09/15 17:48
字数 492
阅读 872
收藏 13

其实Model和Record本质也是属于map的,但是有些情况下还是需要将Model或者Record中的属性和值转换成一个Map键值对,因为在buildCondition的时候需要传字段和值,为了共用一个方法并且统一起来就将Model和Record全转换成一个map传给buildCondition,并且其他地方也有需要这样的转换,例如如果直接将一个Model传给前台页面貌似获取不到Model的属性的需要自己处理转换下!因此就写了这么两个方法。

1、将Model转换成Map

/**
    * 将Model类转换为Map modelToMap
    * 
    * @param 参数说明
     * @return 返回对象
     * @Exception 异常对象
     */
    public static Map<String, Object> modelToMap(Model<?> model) {
        Map<String, Object> map = new HashMap<String, Object>();
        String[] names = model.getAttrNames();
        for (String str : names) {
            map.put(str, model.get(str));
        }
        return map;
    }

2、将Record转换成Map

/**
    * 将Record转换成Map recordToMap
    * 
    * @param 参数说明
     * @return 返回对象
     * @Exception 异常对象
     */
    public static Map<String, Object> recordToMap(Record record) {
        Map<String, Object> map = new HashMap<String, Object>();
        if (record != null) {
            String[] columns = record.getColumnNames();
            for (String col : columns) {
                map.put(col, record.get(col));
            }
        }
        return map;
    }

3、判断对象是否为空

/**
     * 判断对象或对象数组中每一个对象是否为空: 对象为null,字符序列长度为0,集合类、Map为empty
     * 
     * @param obj
     * @return
     */
    @SuppressWarnings("unchecked")
    public static boolean isNullOrEmpty(Object obj) {
        if (obj == null) {
            return true;
        } else if (obj instanceof String && (obj.equals(""))) {
            return true;
        } else if (obj instanceof Short && ((Short) obj).shortValue() == 0) {
            return true;
        } else if (obj instanceof Integer && ((Integer) obj).intValue() == 0) {
            return true;
        } else if (obj instanceof Double && ((Double) obj).doubleValue() == 0) {
            return true;
        } else if (obj instanceof Float && ((Float) obj).floatValue() == 0) {
            return true;
        } else if (obj instanceof Long && ((Long) obj).longValue() == 0) {
            return true;
        } else if (obj instanceof Boolean && !((Boolean) obj)) {
            return true;
        } else if (obj instanceof Collection && ((Collection) obj).isEmpty()) {
            return true;
        } else if (obj instanceof Map && ((Map) obj).isEmpty()) {
            return true;
        } else if (obj instanceof Object[] && ((Object[]) obj).length == 0) {
            return true;
        }
        return false;
    }

 

© 著作权归作者所有

h
粉丝 3
博文 4
码字总数 3778
作品 0
深圳
程序员
私信 提问
加载中

评论(1)

咖啡男孩
确实是,在实际开发中,我个人也是讲model和record转换成map处理的
JFinal 2.1 最终版发布,用JFinal开发,就这么定了!

由于 jfinal 2.1 在不完全统计的情况下有超过60项的升级与改进,所以自发布这几天以来,立即收到了大量的使用反馈,为了使开发者尽可能快地用上反馈后的新版本,本次jfinal 2.1延迟了推送到m...

JFinal
2016/01/11
6.8K
62
JFinal多参数搜索条件自动组装及参数传递

网站中常常会用到搜索功能。单个条件的搜索很好实现,多条件组合搜索时,如何优美地实现参数的组装和传递就成了一个重要的问题。 最近在用JFinal做点小东西,遇到了这个功能需求,经过一番努...

VikingZ
2013/07/12
6.3K
2
JBolt-JFinal开发利器,新官网上线

JBolt,诞生于2016年8月,以Eclipse插件的形式提供给JFinal开发者无偿下载使用。(Idea版还在捣鼓...) 今天JBolt新版官网正式上线,欢迎访问学习交流和使用,有什么问题,在社区提问@我即可,...

山东-小木
07/21
215
0
请问:生成jFinal的动态条件查询语句的工具类的中的 Common 类在什么包中?

请问:生成jFinal的动态条件查询语句的工具类的中的 Common 类在什么包中?

yhjzcl
2014/08/05
200
2
JFinal 2.2 发布,用 JFinal 开发,就这么定了!

JFinal 2.2 主要针对于 2.1 版本中反馈集中的几个问题进行改进,另外也让jfinal 2.1非最终版用户升为统一的版本。 1:改进paginate 在2.1 版中使用了正则对paginate方法匹配 select 与 grou...

JFinal
2016/01/19
16K
91

没有更多内容

加载失败,请刷新页面

加载更多

springboot 403 问题

添加WebAppConfigurer 配置 @Configuration@EnableAutoConfigurationpublic class WebAppConfigurer extends WebMvcConfigurerAdapter { public WebAppConfigurer() { } ......

布袋和尚_爱吃鱼
9分钟前
2
0
Python自动更换壁纸爬虫与tkinter结合

直接上代码 import ctypesimport timeimport requestsimport osfrom threading import Threadfrom tkinter import Tk, Label, Button,Entry,StringVar,messagebox# '放到AppData\Roami......

物种起源-达尔文
9分钟前
1
0
Postgresql Study 笔记

Postgresql 安装 Windows, MAC Install Postgresql 下载地址: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads Linux Install sudo apt-get update sudo apt-get in......

slagga
11分钟前
2
0
layer.open 打开新页面传参问题

如图所示,点击出售,把A页面的数据传到弹框上面,因为弹框比较复杂,所以使用引入一个新页面。 A.html a.js B.html b.js 1、第一种方案 sellInte: function (){ var obj = document.g...

木九天
14分钟前
2
0
沙龙报名 | 区块链数据服务技术应用实践

京东云是国内首家提供区块链数据在线分析服务产品的公司,也是行业内首家对区块链数据服务进行开源的公司。 本次沙龙是京东云BDS开源后,首次在深圳举办线下沙龙,我们将邀请京东云BDS团队核...

京东云技术新知
15分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部