- 浏览: 566123 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
a1641693970:
还不错,学习了
BeanUtils使用总结(二)LazyDynaBean -
zjfshowtime:
很好的办法,学习了。
ORA-28001: the password has expired -
ya654277yo:
哦,多谢分享
Apache整合Tomcat后get方式提交中文乱码问题解决 -
foolkeeper:
nice !!
jvm内存参数设定 -
tracy821:
谢谢了,找了好久才找到
关于Spring 声明式事务处理时,throws exception不回滚的问题
LazyDynaBean
它实现一个动态的Bean,可以直接往里面加入属性,作为一个JavaBean一样使用,也可以用上面的BeanUtils或get/set方法进行操作,而不用事先定义一个标准的JavaBean类.
记得在J2ee设计模式中有一种Value Object的模式,用于在MVC各层之间传递数据,避免直接传递大业务对象引起的性能问题,为了避免在项目中出现很多Bean类,在书中提供了一个动态Value Object的实现(通过扩展Map)。
这里LazyDynaBean则可以作为一种更加成熟、稳定的实现来使用。
- //这里使用LazyDynaMap,它是LazyBean的一个轻量级实现
- LazyDynaMap dynaBean1 = new LazyDynaMap();
- dynaBean1.set("foo", "bar"); // simple
- dynaBean1.set("customer", "title", "Mr"); // mapped
- dynaBean1.set("address", 0, "address1"); // indexed
- System.out.println(dynaBean1.get("address",0));
- Map myMap = dynaBean1.getMap(); // retrieve the Map
- System.out.println(myMap.toString());
//这里使用LazyDynaMap,它是LazyBean的一个轻量级实现 LazyDynaMap dynaBean1 = new LazyDynaMap(); dynaBean1.set("foo", "bar"); // simple dynaBean1.set("customer", "title", "Mr"); // mapped dynaBean1.set("address", 0, "address1"); // indexed System.out.println(dynaBean1.get("address",0)); Map myMap = dynaBean1.getMap(); // retrieve the Map System.out.println(myMap.toString());
上面的例子可以看到,它可以在set时自动增加bean的property(既赋值的同时增加Bean中的property),
同时也支持3中类型的property,并且LazyDynaMap还可以导出为map。
对于这个类还有两个重要的Field要注意:
(1) returnnull——指定在get方法使用了一个没有定义过的property时,DynaBean的行为。
//设为ture。若Bean中没有此字段,返回null,默认为false。若Bean中没有此字段,自动增加一个
dynaBean1.setReturnNull(true);
System.out.println(dynaBean1.get("aaa"));//此时返回null
(2) Restricted——指定是否允许改变这个bean的property
//默认为false,允许增删和修改
dynaBean1.setRestricted(true);
dynaBean1.set("test","error");//这里会出错!
通过设置这两个属性,可以防止意外修改DynaBean的property。在设计架构时,你可以在后台从数据表或xml文件自动产生DynaBean,在传到控制层和表示层之前设置上述属性使其Bean结构不允许修改,如此就不可能无意中修改Bean包含的属性……这样既可以享用它的便利,有可以防止由此引入的错误可能。
以下附上上几个 LazyDynaBean 的使用示例:
(1)普通bean
- import java.util.GregorianCalendar;
- import org.apache.commons.beanutils.LazyDynaBean;
- import org.apache.commons.beanutils.BeanUtils;
- public class BeanUtilsExample2 {
- //动态创建属性
- public static void main(String args[]) throws Exception {
- LazyDynaBean hh = new LazyDynaBean();
- hh.set("country", "中国");
- hh.set("city", "北京");
- hh.set("postCode", "100120");
- hh.set("addr", "aaaaaaa");
- LazyDynaBean bb = new LazyDynaBean();
- bb.set("phone", "home", "11011011");
- bb.set("phone", "office", "111111");
- bb.set("email", "sh@126.com");
- bb.set("address", 0, hh);
- bb.set("birthDate", new GregorianCalendar(1990, 3, 29).getTime());
- LazyDynaBean tt = new LazyDynaBean();
- tt.set("userId", new Long(8888888));
- tt.set("gggg", "施杨");
- tt.set("password", "sgsgsgsg");
- tt.set("dddd", bb);
- System.out.println(BeanUtils.getProperty(tt, "gggg"));
- System.out.println(BeanUtils.getProperty(tt, "dddd.birthDate"));
- System.out.println(BeanUtils.getProperty(tt,
- "dddd.address[0].addr"));
- System.out
- .println(BeanUtils.getProperty(tt, "dddd.phone(office)"));
- }
- }
import java.util.GregorianCalendar; import org.apache.commons.beanutils.LazyDynaBean; import org.apache.commons.beanutils.BeanUtils; public class BeanUtilsExample2 { //动态创建属性 public static void main(String args[]) throws Exception { LazyDynaBean hh = new LazyDynaBean(); hh.set("country", "中国"); hh.set("city", "北京"); hh.set("postCode", "100120"); hh.set("addr", "aaaaaaa"); LazyDynaBean bb = new LazyDynaBean(); bb.set("phone", "home", "11011011"); bb.set("phone", "office", "111111"); bb.set("email", "sh@126.com"); bb.set("address", 0, hh); bb.set("birthDate", new GregorianCalendar(1990, 3, 29).getTime()); LazyDynaBean tt = new LazyDynaBean(); tt.set("userId", new Long(8888888)); tt.set("gggg", "施杨"); tt.set("password", "sgsgsgsg"); tt.set("dddd", bb); System.out.println(BeanUtils.getProperty(tt, "gggg")); System.out.println(BeanUtils.getProperty(tt, "dddd.birthDate")); System.out.println(BeanUtils.getProperty(tt, "dddd.address[0].addr")); System.out .println(BeanUtils.getProperty(tt, "dddd.phone(office)")); } }
(2)、连接Mysql数据库
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.Iterator;
- import org.apache.commons.beanutils.DynaBean;
- import org.apache.commons.beanutils.ResultSetDynaClass;
- public class BeanUtilsExample3 {
- public static void main(String args[]) throws Exception {
- Connection conn = getConnection();
- PreparedStatement ps = conn
- .prepareStatement("select id,title,time from guestbook2 order by id desc");
- ResultSet rs = ps.executeQuery();
- ResultSetDynaClass rsdc = new ResultSetDynaClass(rs);//重点,二次封装,对连接对象有依赖
- Iterator itr = rsdc.iterator();
- while (itr.hasNext()) {
- DynaBean bean = (DynaBean) itr.next();
- System.out.print(bean.get("id") + "\t");
- System.out.print(bean.get("title") + "\t");
- System.out.println(bean.get("time"));
- }
- conn.close();
- }
- private static Connection getConnection() {
- String url = "jdbc:mysql://localhost:3306/guestbook";
- String username = "root";
- String password = "hicc";
- Connection conn = null;
- try {
- Class.forName("com.mysql.jdbc.Driver");
- conn = DriverManager.getConnection(url, username, password);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return conn;
- }
- }
import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Iterator; import org.apache.commons.beanutils.DynaBean; import org.apache.commons.beanutils.ResultSetDynaClass; public class BeanUtilsExample3 { public static void main(String args[]) throws Exception { Connection conn = getConnection(); PreparedStatement ps = conn .prepareStatement("select id,title,time from guestbook2 order by id desc"); ResultSet rs = ps.executeQuery(); ResultSetDynaClass rsdc = new ResultSetDynaClass(rs);//重点,二次封装,对连接对象有依赖 Iterator itr = rsdc.iterator(); while (itr.hasNext()) { DynaBean bean = (DynaBean) itr.next(); System.out.print(bean.get("id") + "\t"); System.out.print(bean.get("title") + "\t"); System.out.println(bean.get("time")); } conn.close(); } private static Connection getConnection() { String url = "jdbc:mysql://localhost:3306/guestbook"; String username = "root"; String password = "hicc"; Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } }
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.Iterator;
- import org.apache.commons.beanutils.DynaBean;
- import org.apache.commons.beanutils.RowSetDynaClass;
- public class BeanUtilsExample4 {
- public static void main(String args[]) throws Exception {
- Connection conn = getConnection();
- PreparedStatement ps = conn
- .prepareStatement("select id,title,time from guestbook2 order by id desc");
- ResultSet rs = ps.executeQuery();
- RowSetDynaClass rsdc = new RowSetDynaClass(rs);
- //重点,与ResultSetDynaClass的区别
- conn.close();//重点,关闭连接后仍能读取
- Iterator itr = rsdc.getRows().iterator();
- while (itr.hasNext()) {
- DynaBean bean = (DynaBean) itr.next();
- System.out.print(bean.get("id") + "\t");
- System.out.print(bean.get("title") + "\t");
- System.out.println(bean.get("time"));
- }
- }
- private static Connection getConnection() {
- String url = "jdbc:mysql://localhost:3306/guestbook";
- String username = "root";
- String password = "hicc";
- Connection conn = null;
- try {
- Class.forName("com.mysql.jdbc.Driver");
- conn = DriverManager.getConnection(url, username, password);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return conn;
- }
- }
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Iterator; import org.apache.commons.beanutils.DynaBean; import org.apache.commons.beanutils.RowSetDynaClass; public class BeanUtilsExample4 { public static void main(String args[]) throws Exception { Connection conn = getConnection(); PreparedStatement ps = conn .prepareStatement("select id,title,time from guestbook2 order by id desc"); ResultSet rs = ps.executeQuery(); RowSetDynaClass rsdc = new RowSetDynaClass(rs); //重点,与ResultSetDynaClass的区别 conn.close();//重点,关闭连接后仍能读取 Iterator itr = rsdc.getRows().iterator(); while (itr.hasNext()) { DynaBean bean = (DynaBean) itr.next(); System.out.print(bean.get("id") + "\t"); System.out.print(bean.get("title") + "\t"); System.out.println(bean.get("time")); } } private static Connection getConnection() { String url = "jdbc:mysql://localhost:3306/guestbook"; String username = "root"; String password = "hicc"; Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } }
发表评论
-
BCD Conversion in java
2016-03-31 23:39 1783/** * Copyright 2010 Firat ... -
在java代码中获取JVM参数
2014-04-08 11:16 14192近日关注性能调优,关注JMX,发现java.lang.man ... -
GC日志分析配置与工具
2013-05-08 11:32 1310-verbose:gc(打印GC日志) -Xloggc:( ... -
java 实现HTTP PROXY
2012-12-06 17:21 7528日常应用中使用过很多次代理,主要停留在配置级别。 近期无意看 ... -
运行时获取方法调用堆栈信息(java)
2012-09-14 10:53 9644前几日系统流程回调时,一个方法莫名其妙被调用,无法定位调用点。 ... -
EL表达式在tomcat7.0下的new关键字不能使用
2012-08-24 17:25 4009最近生产系统部署个小应用,服务器选型tomcat7.0,一直运 ... -
xfire设置连接超时问题
2012-08-01 17:25 5096近期使用xfire作为客户端访问WS,结果因为目标主机假死 ... -
将多个对象写到一个文件
2012-07-20 17:08 1183来看一段ObjectOutputStream构造方法的源代码 ... -
多线程学习笔记:synchronized
2011-12-15 17:32 807Java语言的关键字,当它 ... -
(转)使用 Eclipse Memory Analyzer 检测内存泄漏问题
2011-12-14 18:10 1089本文是关于在开发 Talend RCP 过程中碰 ... -
多线程学习笔记:thread 线程中的sleep()、wait()、yield()、join()
2011-12-14 17:46 12411.sleep()方法 在指定时间内让当前正在执行的线程暂 ... -
jconsole监控JVM
2011-12-12 17:46 1521本地监控: Jconsole [processed] ... -
Java 6 JVM参数选项大全(中文版)
2011-11-03 15:19 991本文 是基于最新的SUN官方 文档Java SE 6 ... -
Java实现远程屏幕监视
2011-10-19 17:40 692Robot robot = new Robot(); / ... -
java线程池 常用方法
2011-09-24 22:52 1345在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于 ... -
JAVA 调用Web Service的方法
2011-08-15 10:28 11151.使用HttpClient 用到的jar文件:comm ... -
JVM监控工具--jvmstat
2011-08-02 15:42 1230首先就是下载这个工具链接:http://java.sun.co ... -
java性能优化
2011-07-18 15:19 1069一、避免在循环条件中 ... -
jvm内存参数设定
2011-07-17 20:30 1321在开发java应用时经常出 ... -
怎样解决Java内存泄漏
2011-07-15 11:38 1420解决Java 内存泄漏 Java内存泄漏是每个 ...
相关推荐
commons-beanutils使用工具包
beanutils使用的一个小例子,主要完成一个map转化成一个bean的过程
BeanUtils用法
使用servlet实现注册&登录&解决注册乱码&beanutils;的使用
赠送jar包:commons-beanutils-1.9.4.jar; 赠送原API文档:commons-beanutils-1.9.4-javadoc.jar; 赠送源代码:commons-beanutils-1.9.4-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.9.4.pom; ...
BeanUtils 是 Apache commons组件的成员之一,主要用于简化JavaBean封装数据的操作。它可以给JavaBean封装一个字符串数据,也可以将一个表单提交的所有数据封装到JavaBean中。使用第三方工具,需要导入jar包:
赠送jar包:commons-beanutils-1.9.4.jar; 赠送原API文档:commons-beanutils-1.9.4-javadoc.jar; 赠送源代码:commons-beanutils-1.9.4-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.9.4.pom; ...
BeanUtils工具由Apache软件基金组织编写,提供给我们使用,主要解决的问题是:把对象的属性数据封装到对象中。在整个J2EE的编程过程中,我们经常会从各种配置文件中读取相应的数据,需要明白的一点是从配置文件中...
BeanUtils是由Apache公司开发的针对操作JavaBean的工具包。...但是由Apache公司开发的BeanUtils会更常用,同时,BeanUtils还需要配合第三方日志工具来使用,这里我们同样使用Apache公司的common logging
commons-beanutils-1.8.0.jar beanutils.jar beanutils.jar工具包
BeanUtils工具是一种方便我们对JavaBean进行操作的工具,是Apache组织下的产品。beanUtils 可以便于对javaBean的属性、对象进行赋值,beanUtils可以将一个MAP集合的数据拷贝到一个javabean对象中。
BeanUtils教程BeanUtils教程BeanUtils教程BeanUtils教程BeanUtils教程BeanUtils教程
BeanUtils_1.8.3最新帮助文档,希望对给位有用。。。
赠送jar包:commons-beanutils-1.9.3.jar; 赠送原API文档:commons-beanutils-1.9.3-javadoc.jar; 赠送源代码:commons-beanutils-1.9.3-sources.jar; 包含翻译后的API文档:commons-beanutils-1.9.3-javadoc-...
BeanUtils工具 .jar 包使用很简单 可以参考博客java学习笔记——javaweb之BeanUtils、EL、JSTL
commons-beanutils-1.8.0 jar包: 1.commons-beanutils-1.8.0.jar 2.commons-beanutils-1.8.0-javadoc.jar 3.commons-beanutils-1.8.0-sources.jar 4.commons-beanutils-bean-collections-1.8.0.jar 5.commons-...
BeanUtils的包BeanUtils的包BeanUtils的包BeanUtils的包BeanUtils的包BeanUtils的包BeanUtils的包BeanUtils的包BeanUtils的包
完美beanUtils 1.8 jar包与源码
Commons-beanutils jar包,比较新希望对大家能有帮助
此为BeanUtils的实例。其中apache的包有一个小的BUG已在其中说明。