Bean-Query 一个把对象转换为Map的Java工具库
刚开源了一个经过完整測试的Java工具类。
地址例如以下:
https://github.com/Jimmy-Shi/bean-query
使用说明例如以下:
Bean-query
Click Here for English version.
BeanQuery 是一个把对象转换为Map的Java工具库。支持选择Bean中的一些属性,对结果进行排序和依照条件查询。不只能够作用于顶层对象,也能够作用于子对象。
BeanQuery的使用非常easy也非常直接。样例代码例如以下:
/静态导入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"
}
]
Bean-Query 一个把对象转换为Map的Java工具库的更多相关文章
- Java中将对象转换为Map的方法
将对象转换为Map的方法,代码如下: /** * 将对象转成TreeMap,属性名为key,属性值为value * @param object 对象 * @return * @throws Illeg ...
- 使用 js 实现一个中文自动转换成拼音的工具库
使用 js 实现一个中文自动转换成拼音的工具库 中文 => zhong-wen 应用场景 SEO 友好, URL 自动转换 blogs 发布文章,自动化部署,自动生成 url 的 path (时 ...
- Bean Query 第一个版本号(1.0.0)已公布
BeanQuery 是一个把对象转换为Map的Java工具库. 支持选择Bean中的一些属性.对结果进行排序和依照条件查询. 不只能够作用于顶层对象,也能够作用于子对象.很多其它具体的介绍能够看我的博 ...
- java将对象转map,map转对象工具类
/** * 将map转换为一个对象 * * @param map * @param beanClass * @return * @throws Exception */ public static O ...
- Json:Java对象和Json文本转换工具类
Json 是一个用于 Java 对象 和 Json 文本 相互转换的工具类. 安装 下载源码 git clone https://github.com/njdi/durian.git 编译源码 cd ...
- JSon_零基础_005_将po(bean)对象转换为JSon格式的对象字符串,返回给界面
将po(bean)对象转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写po(bean)类: package com.west.webcourse.po; /** * 第01步:编写be ...
- javabean转换为map对象
在调用第三方接口发现对方使用map进行接收(不包括秘钥等),将bean类属性转换为map,直接贴代码: /** * JavaBean对象转化成Map对象 * * @param javaBean */p ...
- Hibernate三种状态;query查询;ResultTransformer转换为pojo对象;能够将query语句写在xml中;Criteria查询;ProjectionList总和/f分组等函数
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010026901/article/details/24256091 Session操作过程中的po ...
- JSon_零基础_003_将Map集合对象转换为JSon格式的对象字符串,返回给界面
将Map集合对象转换为JSon格式的对象字符串,返回给界面 需导入的jar包: 编写servlet: package com.west.webcourse.servlet; import java.i ...
随机推荐
- 在Windows上使用CodeLite+MinGW+Clang进行开发
前几天听说clang 3.4已经release了,然后我又手痒就折腾一下,在这里记录一下折腾的经过. 在以前就试过clang-cl+VC的开发环境,编译代码到是没发现什么大问题,有不少警告而已,不过c ...
- 哈,又一款超级简单的队列(MQ)实现方案来了~
开源的消息队列已经很多了,但大部分很重,实际环境下,很多可能只是使用到了一点功能而已,杀鸡使用牛刀,着实有些浪费了.很多时候,我们只想要一片绿叶,但它们给了我们整个的春天,很难消化.本着DIR精神, ...
- C语言声明解析方法
1.C语言声明的单独语法成份 声明器是C语言声明的非常重要成份,他是所有声明的核心内容,简单的说:声明器就是标识符以及与它组合在一起的任何指针.函数括号.数组下表等,为了方便起见这里进行分类表 ...
- (转载)Jvm工作原理学习笔记
一. JVM的生命周期 1. JVM实例相应了一个独立执行的java程序它是进程级别 a) 启动.启动一个Java程序时.一个JVM实例就产生了.不论什么一个拥有publ ...
- 零积分下载,2014年辛星mysql教程秋季版第一本已经完工,期待您的支持
经过一段时间的不懈努力.终于,2014年辛星mysql教程秋季版的第一本,即夯实基础已经完工,在csdn的下载地址为:去下载地址 ,假设左边地址跪了,能够去http://download.csdn.n ...
- Appium 的安装启动
Appium 的安装方式根据官网提供的是使用nodejs 安装,但是官方给出了三种方法 参考网址: appium下载地址: https://bitbucket.org/appium/appium.ap ...
- 动态面板——axure线框图部件库介绍
1.什么是Axure的动态面板 按照Axure官方网站的解释 :动态面板控件(Dynamic Panel)可以让你实现高级的交互功能,实现原型的高保真度.动态面板包含有多个状态(states),每个状 ...
- Eclipse设置Android Logcat输出字体大小
Window -> Preferences -> Android -> Logcat -> Display Font:点击"Change"button 如图 ...
- Shell 文件包含
和其他语言一样,Shell 也可以包含外部脚本.这样可以很方便的封装一些公用的代码作为一个独立的文件. Shell 文件包含的语法格式如下: . filename # 注意点号(.)和文件名中间有一空 ...
- vc2010下使用64位控件
最近把我的控件(ST_Curve www.st-curve.cn)升级到了64位,2010编译,本来以为很简单的问题,结果折腾了两天(也有可能我多年没做过界面和vc相关的东西了吧),于是把我遇到的问题 ...