Bean-Query 一个把对象转换为Map的Java工具库

刚开源了一个经过完整测试的Java工具类。目前的代码已经经历了完整的测试,正在申请放到Maven central Repository上。

地址如下:

https://github.com/Jimmy-Shi/bean-query

使用说明如下:

Bean-query

Click Here for English version.

BeanQuery 是一个把对象转换为Map的Java工具库。支持选择Bean中的一些属性,对结果进行排序和按照条件查询。不仅仅可以作用于顶层对象,也可以作用于子对象。

BeanQuery的使用非常简单也很直接,例子代码如下:

/静态导入BeanQuery
import static cn.jimmyshi.beanquery.BeanQuery.*;

//使用 select、from、where、orderBy、desc和asc来组装一个Query,然后执行execute方法来获得结果。
List<Map<String, Object>> result = select("price,name,mainAuthor.name as mainAuthorName")
    .from(bookCollection)
    .where(
        //for books name is Book2 or starts with Book1
        anyOf(
            value("name", startsWith("Book1")),
            value("name", is("Book2"))
        ),
        //for books price between (53,65)
        allOf(
            value("price", greaterThan(53d)),
            value("price",lessThan(65d))
        )
    )
    .orderBy("name").desc()
    .execute();

在上面的例子中,bookCollection的内容如下所示(json格式)

[
  {
    "price":55.55,
    "name":"Book1",
    "mainAuthor":{
      "name":"Book1-MainAuthor",
      "address":{
        "address":"Shenzhen Guangdong China",
        "postCode":"518000"
      },
      "birthDate":"1982-01-30T14:52:39"
    }
  },
  {
    "price":52.55,
    "name":"Book12",
    "mainAuthor":{
      "name":"Book1-MainAuthor",
      "address":{
        "address":"Shenzhen Guangdong China",
        "postCode":"518000"
      },
      "birthDate":"1982-01-30T14:52:39"
    }
  },
  {
    "price":53.55,
    "name":"Book13",
    "mainAuthor":{
      "name":"Book13-MainAuthor",
      "address":{
        "address":"Shenzhen Guangdong China",
        "postCode":"518000"
      },
      "birthDate":"1982-01-30T14:52:39"
    }
  },
  {
    "price":60.0,
    "name":"Book14",
    "mainAuthor":{
      "name":"Book14-MainAuthor",
      "address":{
        "address":"Shenzhen Guangdong China",
        "postCode":"518000"
      },
      "birthDate":"1982-01-30T14:52:39"
    }
  },
  {
    "price":50.55,
    "name":"Book15",
    "mainAuthor":{
      "name":"Book1-MainAuthor",
      "address":{
        "address":"Shenzhen Guangdong China",
        "postCode":"518000"
      },
      "birthDate":"1982-01-30T14:52:39"
    }
  },
  {
    "price":77.77,
    "name":"Book3",
    "mainAuthor":{
      "name":"Book3-MainAuthor",
      "address":{
        "address":"Shenzhen Guangdong China",
        "postCode":"518005"
      },
      "birthDate":"1982-01-30T14:52:39"
    }
  }
  ,
  {
    "price":66.66,
    "name":"Book2",
    "mainAuthor":{
      "name":"Book2-MainAuthor",
      "address":{
        "address":"Shenzhen Guangdong China",
        "postCode":"518005"
      },
      "birthDate":"1982-01-30T14:52:39"
    }
  }
]

执行完之后,则result的内容如下所示(json格式)

[
  {
    "price":60.0,
    "name":"Book14",
    "mainAuthorName":"Book14-MainAuthor"
  },
  {
    "price":53.55,
    "name":"Book13",
    "mainAuthorName":"Book13-MainAuthor"
  },
  {
    "price":55.55,
    "name":"Book1",
    "mainAuthorName":"Book1-MainAuthor"
  }
]
时间: 2024-08-10 00:05:08

Bean-Query 一个把对象转换为Map的Java工具库的相关文章

Bean Query 第一个版本(1.0.0)已发布

BeanQuery 是一个把对象转换为Map的Java工具库.支持选择Bean中的一些属性,对结果进行排序和按照条件查询.不仅仅可以作用于顶层对象,也可以作用于子对象.更多详细的介绍可以看我的博文: http://blog.csdn.net/justfly/article/details/40486881 我刚刚发布了版本1.0.0. 现在已经在Sonatype OSS库上了,2个小时后将会被同步到Maven中央库上. Sonatype OSS 库下载地址: https://oss.sonaty

Bean Query 第一个版本号(1.0.0)已公布

BeanQuery 是一个把对象转换为Map的Java工具库. 支持选择Bean中的一些属性.对结果进行排序和依照条件查询. 不只能够作用于顶层对象,也能够作用于子对象.很多其它具体的介绍能够看我的博文: http://blog.csdn.net/justfly/article/details/40486881 我刚刚公布了版本号1.0.0. 如今已经在Sonatype OSS库上了,2个小时后将会被同步到Maven中央库上. Sonatype OSS 库下载地址: https://oss.so

一个小巧但功能强大的跨平台命令行工具库Crossline

Crossline Crossline是一个很小的跨平台命令行工具库,类似Linux上的readline. 项目地址:https://github.com/JunchuanWang80/Crossline 因为开发一个项目需要支持跨平台命令行,在Linux上readline是首选,bash/gdb/ftp都使用了这个库,但是Windows上没法直接用.后来搜到了一个开源项目linenoise,这个命令行工具库是Redis的作者开发的,Redis,Andriod和MongoDB都使用了.这个工具库

JSon_零基础_005_将po(bean)对象转换为JSon格式的对象字符串,返回给界面

将po(bean)对象转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写po(bean)类: package com.west.webcourse.po; /** * 第01步:编写bean类, * 下一步com.west.webcourse.servlet.JavaBeanToJOSNString.java */ public class PersonInfoPo { private String name; private int age; private String sex

javabean转换为map对象

在调用第三方接口发现对方使用map进行接收(不包括秘钥等),将bean类属性转换为map,直接贴代码: /** * JavaBean对象转化成Map对象 * * @param javaBean */public static Map java2Map(Object javaBean) { Map map = new HashMap(16); try { // 获取javaBean属性 BeanInfo beanInfo = Introspector.getBeanInfo(javaBean.ge

【Java】+map对象转换为json格式对象

包:com.alibaba.fastjson.JSONObject;需求:在调用post请求的接口时,入参参数是json格式. 解决: 1.用map对象分别将入参的格式键值对写好 2.将map对象转换为json对象 3.直接用此json对象作为post接口的入参即可 原文地址:https://www.cnblogs.com/danhuai/p/11207326.html

java bean、List、数组、map和Json的相互转化

工程 json包为  代码 package com.my.json; public class ChildBean { private String childName; private String childSex; private int childAge; public ChildBean() { } public ChildBean(String childName, String childSex, int childAge) { this.childName = childName

无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)

1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent&

ServletContext对象(每个工程只有一个此对象)

一]重点方法:        1>存取对象                        void setAttribute(String name, Object object);//将object存入ServletContext对象中,并取名为name(方便取出,与Map类似)                        Object getAttribute(String name);//获取name对应的对象        2>解析web.xml中<context-param&