呵呵,在《develope j2ee without ejb》中,dto被狠很地批判了一把,rod说这完全是反模式。可实际项目当中,我们还是不得不在使用。vo,po,一牵扯到概念总是多么复杂。。。把一个po从头传到尾??从页面到数据库,一捅到底?no,no,万一你要显示给用户的是几个po的结合怎么办?万一我们只是需要某几个属性组合在一起显示怎么办?一捅到底的策略是多么丑陋,而且你完全把你的数据库设计模型暴露给用户。所以我们需要一些map工具来转换,在这方面,过去我只知道有个 beanutils,不够灵活,而今天,接触了下dozer,啊,跟spring一样的理念!灵活多变,你想怎么映射,想怎么换都可以。看看它支持的转换类型:
• primitive to primitive wrapper
• primitive to custom wrapper
• primitive wrapper to primitive wrapper
• primitive to primitive
• complex type to complex type
• string to primitive
• string to primitive wrapper
• string to complex type if the complex type contains a string constructor
• each of these can be mapped to one another: java.util.date, java.sql.date, java.sql.time,
java.sql.timestamp, java.util.calendar, java.util.gregoriancalendar
• string to any of the supported date/calendar objects if an explicit date format mapping attribute is
specified.
• objects containing a tostring() method that produces a long representing time in (ms) to any
supported date/calendar object.
几乎我们能想到的,它都提供了方法来做到。而且dozer可以很容易地跟spring集成。下面举个简单例子:
定义一个book对象:
package com.denny_blue.dozerdemo;
public class book {
private string name;
private string author;
public book(){
}
public void setauthor(string author) {
this.author = author;
}
public string getauthor() {
return (this.author);
}
public void setname(string name){
this.name=name;
}
public string getname(){
return this.name;
}
}
简单的,我们要实例化一个对象,然后clone此对象,注意,是clone!
package com.denny_blue.dozerdemo;
import net.sf.dozer.util.mapping.dozerbeanmapper;
import java.util.list;
import java.util.arraylist;
public class myfirstdozerdemo {
public static void main(string args[]){
book book1=new book();
book1.setauthor("dennis");
book1.setname("dozer demo");
dozerbeanmapper mapper=new dozerbeanmapper();
book book2=new book();
mapper.map(book1,book2);
book2=(book)mapper.map(book1,com.denny_blue.dozerdemo.book.class);
system.out.println("book2's name:" book2.getname());
}
}
ok,如此简单,我们把book1的属性完全复制给了book2,两者现在是完全独立的对象。可如果仅仅是这样,我们用beanutils不是也很容易办到? book2=(book)beanutils.clonebean(book1);可如果我要把book1映射给一个完全不同的类的对象怎么办?而且他们的属性名也不相同,怎么办?比如,一个cookbook类:
package com.denny_blue.dozerdemo;
public class cookbook {
private string bookname;
private string author;
public cookbook(){}
public string getbookname() {
return (this.bookname);
}
public void setbookname(string bookname) {
this.bookname = bookname;
}
public string getauthor() {
return (this.author);
}
public void setauthor(string author) {
this.author = author;
}
}
它的bookname属性与book的name属性名不一样,我们该如何复制?dozer通过xml文件的配置来灵活地达到这个目的。我们配置一个dozerbeanmapping.xml:
"">
false
mm/dd/yyyy hh:mm
true
com.denny_blue.dozerdemo.book
com.denny_blue.dozerdemo.cookbook
bookname
author
如上所示,指定所要复制的源对象,复制的目标对象,
- 2007-02-06 12:45
- 浏览 11608
- 评论(3)
相关推荐
内含dozer的完整实例,以及jar包。dozer比beanutils更灵活,同时可以很容易地跟spring集成。也可以用注解@mapping("asstmanagerid")来代替xml配置
dozer是一种javabean的映射工具,类似于apache的beanutils
赠送jar包:dozer-5.5.1.jar; 赠送原api文档:dozer-5.5.1-javadoc.jar; 赠送源代码:dozer-5.5.1-sources.jar; 赠送maven依赖信息文件:dozer-5.5.1.pom; 包含翻译后的api文档:dozer-5.5.1-javadoc-api文档-...
dozer是一种javabean的映射工具,类似于apache的beanutils。但是dozer更强大,它可以灵活的处理复杂类型之间的映射
下载内容包含 commons-beanutils-1.7.0.jar commons-collections.jar commons-lang-2.5.jar dozer-5.2.0.jar等
dozer-5.5.1.jar dozer-5.5.1.jar dozer-5.5.1.jar dozer-5.5.1.jar
dozer是一种javabean的映射工具,类似于apache的beanutils。它可以灵活地处理复杂类型之间的映射。不但可以进行简单的属性映射、复杂的类型映射、双向映射、递归映射等,并且可以通过xml配置文件进行灵活的配置。 ...
dozer的eclipse插件,使用该插件可以可视化编辑对应属性,简化你的编码工作
dozer是一款优秀的java bean映射开源框架,完成深度转换bean<->bean的mapper实现
dozer 的配置mapping,包含普通映射配置,list复杂类型配置。reqparam.json 是转换类的参数值,stringutils 读取文件。
需要lib[dozer-5.0.jar, commons-lang.jar],有需要的请猛击下载
该文件是拷贝对象工具dozer相关的jar包和dozer的配置用法的详细说明,简洁实用。
有关于dozer的用法 毕业了~ 所有资料拿出来分享~ 难免有错误~多见谅~
dozer5.5.1 ( 可集成spring 及 osgi ) , 不论在spring及osgi 下均可使用 包含所有5.5.1 所依赖的jar包,可根据需求添加。
赠送jar包:dozer-5.5.1.jar; 赠送原api文档:dozer-5.5.1-javadoc.jar; 赠送源代码:dozer-5.5.1-sources.jar; 赠送maven依赖信息文件:dozer-5.5.1.pom; 包含翻译后的api文档:dozer-5.5.1-javadoc-api文档-...
好用简洁的开源mac osx下的菜单栏管理软件,完美替代bartender
null 博文链接:https://gaojiewyh.iteye.com/blog/1528587
null 博文链接:https://bruceliu02.iteye.com/blog/1771227
类似struts一的beanutils的拷贝值的功能,不过更强大些。