知识大全 始终会用上的Common BeanUtils

Posted 属性

篇首语:我允许别人比我强,但我不允许我没有别人努力。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 始终会用上的Common BeanUtils相关的知识,希望对你有一定的参考价值。

始终会用上的Common BeanUtils  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Beanutils用了魔术般的反射技术 实现了很多夸张有用的功能 都是C/C++时代不敢想的 无论谁的项目 始终一天都会用得上它 我算是后知后觉了 第一回看到它的时候居然错过

   属性的动态getter setter

    在这框架满天飞的年代 不能事事都保证执行getter setter函数了 有时候属性是要根据名字动态取得的 就像这样   

  BeanUtils getProperty(myBean code );

而Common BeanUtils的更强功能在于可以直接访问内嵌对象的属性 只要使用点号分隔

  BeanUtils getProperty(orderBean address city );

    相比之下其他类库的BeanUtils通常都很简单 不能访问内嵌的对象 所以有时要用Commons BeanUtils来替换它们 BeanUtils还支持List和Map类型的属性 如下面的语法即可取得Order的顾客列表中第一个顾客的名字

  BeanUtils getProperty(orderBean customers[ ] name );

    其中BeanUtils会使用ConvertUtils类把字符串转为Bean属性的真正类型 方便从HttpServletRequest等对象中提取bean 或者把bean输出到页面 而PropertyUtils就会原色的保留Bean原来的类型

   BeanCompartor 动态排序

    还是通过反射 动态设定Bean按照哪个属性来排序 而不再需要在实现bean的Compare接口进行复杂的条件判断

  List peoples = ; // Person对象的列表Collections sort(peoples new BeanComparator( age ));

  如果要支持多个属性的复合排序 如 Order By lastName firstName

  ArrayList sortFields = new ArrayList();sortFields add(new BeanComparator( lastName ));sortFields add(new BeanComparator( firstName ));ComparatorChain multiSort = new ComparatorChain(sortFields);Collections sort(rows multiSort);

  其中ComparatorChain属于jakata mons collections包 如果age属性不是普通类型 构造函数需要再传入一个parator对象为age变量排序 另外 BeanCompartor本身的ComparebleComparator 遇到属性为null就会抛出异常 也不能设定升序还是降序 这个时候又要借助mons collections包的ComparatorUtils

  Comparator mycmp = ComparableComparator getInstance();   mycmp = ComparatorUtils nullLowComparator(mycmp);  //允许null   mycmp = ComparatorUtils reversedComparator(mycmp); //逆序   Comparator cmp = new BeanComparator(sortColumn mycmp);

Converter 把Request或ResultSet中的字符串绑定到对象的属性

  经常要从request resultSet等对象取出值来赋入bean中 如果不用MVC框架的绑定功能的话 下面的代码谁都写腻了

  String a = request getParameter( a ); bean setA(a); String b = bean setB(b);

  不妨写一个Binder自动绑定所有属性:

  MyBean bean = ; HashMap map = new HashMap(); Enumeration names = request getParameterNames(); while (names hasMoreElements()) String name = (String) names nextElement(); map put(name request getParameterValues(name)); BeanUtils populate(bean map);

  其中BeanUtils的populate方法或者getProperty setProperty方法其实都会调用convert进行转换     但Converter只支持一些基本的类型 甚至连java util Date类型也不支持 而且它比较笨的一个地方是当遇到不认识的类型时 居然会抛出异常来  对于Date类型 我参考它的sqldate类型实现了一个Converter 而且添加了一个设置日期格式的函数 要把这个Converter注册 需要如下语句

  ConvertUtilsBean convertUtils = new ConvertUtilsBean();   DateConverter dateConverter = new DateConverter();   convertUtils register(dateConverter Date class); //因为要注册converter 所以不能再使用BeanUtils的静态方法了 必须创建BeanUtilsBean实例BeanUtilsBean beanUtils = new BeanUtilsBean(convertUtils new PropertyUtilsBean()); beanUtils setProperty(bean name value);

其他功能 ConstructorUtils 动态创建对象

  public static Object invokeConstructor(Class klass Object arg)

MethodUtils 动态调用方法

  MethodUtils invokeMethod(bean methodName parameter);

PropertyUtils 当属性为Collection Map时的动态读取 Collection: 提供index

  BeanUtils getIndexedProperty(orderBean items );

或者

  BeanUtils getIndexedProperty(orderBean items[ ] );

Map: 提供Key Value

  BeanUtils getMappedProperty(orderBean items );//key value goods_no=

或者

  BeanUtils getMappedProperty(orderBean items( ) )

PropertyUtils 直接获取属性的Class类型 cha138/Article/program/Java/Javascript/201311/25458

相关参考

知识大全 浅析LigerUi开发中谨慎载入common.css文件

浅析LigerUi开发中谨慎载入common.css文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 会计专业 大学里学到的哪些知识实习工作期间一定会用上呢

会计专业大学里学到的哪些知识实习工作期间一定会用上呢会计专业知识从事会计类实习一定会用上会计专业怎样开始实习工作?首先要考取“会计从业资格证书”,这是敲门砖,然后可以边找工作边复习考职称。先报考初级练

知识大全 9.1.1 Common Language Runtime类型

9.1.1CommonLanguageRuntime类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 answering 50 Common Interview Questions–zz

answering50CommonInterviewQuestions–zz  以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容,让

知识大全 Section 6. Solutions to common miscellaneous prob

Section6.Solutionstocommonmiscellaneousprob  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布

上下影线的形式

上下影线的形式1.试盘型上影线有些主力拉升股票时,操作谨慎,在欲创新高或股价行进到前期高点时,均要试盘,用上影线试探上方抛压,也可称“探路”。上影线长,但成交量未放大,股价始终在一个区域内收带上影线的

知识大全 做销售,始终如一的对待客户,不知道会不会有

做销售,始终如一的对待客户,不知道会不会有没有人能够始终如一的对另外一个人,更不要说对客户了。原则性在强的人,也在变化中。例如:孝子对父母的爱都无法始终如一。为何?因为今天你觉得这样是最好,但是随着环

知识大全 人的一生,会遇到很多人,有些人只是心中的过客,虽然在经意间爱上他,始终都是过客,应不应该放弃呢

人的一生,会遇到很多人,有些人只是心中的过客,虽然在经意间爱上他,始终都是过客,应不应该放弃呢?那要问问自己的内心,是不是真心喜欢这个人了,是就不要错过了人的一生中是否有很多人只是匆匆过客每个出现在你

知识大全 写一个描写春天的段落300字(用上明喻暗喻借喻)

写一个描写春天的段落300字(用上明喻暗喻借喻)转瞬间严冬已逝,春天已悄悄地来到人间.春天,是美好的季节,是充满诗情的季节;春天,又意味着一个生机勃勃的开始.自古以来,诗人喜爱春天,赞美春天,是因为春

知识大全 有没有不用上网站就能收发电子邮件的软件

有没有不用上网站就能收发电子邮件的软件vstart(音速启动),好像可以,而且功能挺多的.值得推荐.:crsky./soft/853.普通手机能收发电子邮件吗?什么叫普通?????支持就可以!!不支持