紫风乱写

除了他眼前的屏幕,这个人什么也没看见。
被周围的电脑簇拥着,他只知道他所创造的现实,但又意识到那是虚幻。
他已经超越了技术。也超越了机器。
posts - 62, comments - 93, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
刚开源了一个经过完整测试的Java工具类。
地址如下:
https://github.com/Jimmy-Shi/bean-query

使用说明如下:

Bean-query

Click Here for English version.

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

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

 1 //静态导入BeanQuery
 2 import static cn.jimmyshi.beanquery.BeanQuery.*;
 3 
 4 
 5 //使用 select、from、where、orderBy、desc和asc来组装一个Query,然后执行execute方法来获得结果。
 6 List<Map<String, Object>> result = select("price,name,mainAuthor.name as mainAuthorName")
 7     .from(bookCollection)
 8     .where(
 9         //for books name is Book2 or starts with Book1
10         anyOf(
11             value("name", startsWith("Book1")),
12             value("name", is("Book2"))
13         ),
14         //for books price between (53,65)
15         allOf(
16             value("price", greaterThan(53d)),
17             value("price",lessThan(65d))
18         )
19     )
20     .orderBy("name").desc()
21     .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"
  }
]

评论

# re: Bean-Query 一个把对象转换为Map的Java工具库  回复  更多评论   

2014-10-27 11:20 by 网购商城
文章不错,谢谢分享

# re: Bean-Query 一个把对象转换为Map的Java工具库  回复  更多评论   

2014-10-27 11:47 by java论坛
什么时候可以用?

# re: Bean-Query 一个把对象转换为Map的Java工具库  回复  更多评论   

2014-10-27 23:37 by Justfly Shi
@java论坛

现在已经是好使的了,不过还没有获得发布到Maven central repository上的许可。

# re: Bean-Query 一个把对象转换为Map的Java工具库  回复  更多评论   

2014-10-29 02:27 by Justfly Shi
@java论坛

现在已经可以用了,详情请查看
http://www.blogjava.net/justfly/archive/2014/10/29/419152.html

# re: Bean-Query 一个把对象转换为Map的Java工具库[未登录]  回复  更多评论   

2014-11-11 17:38 by changedi
很赞啊,有空去研读下源码

# re: Bean-Query 一个把对象转换为Map的Java工具库[未登录]  回复  更多评论   

2014-11-14 11:24 by Justfly Shi
@下巴长痘痘是什么原因
现在已经可以用了。

只有注册用户登录后才能发表评论。


网站导航: