dozer与beanutils -欧洲杯足彩官网

`

dozer与beanutils

    博客分类:
  • java

呵呵,在《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


如上所示,指定所要复制的源对象,复制的目标对象,

|
评论
3 楼 hellostory 2013-11-15  
aaa5131421 写道
07年2月hibernate已经出来好久了吧,配置上关联,组合的对象一定是关联在一起的。
数据库设计并不是暴漏给用户,只是界面而已。如果有远程调用,确实会暴漏给客户,可是暴漏了又有什么问题吗?其实归根暴漏的是业务逻辑,数据库只是你的实现方式恰好和领域模型一致罢了。一个不想给客户看业务逻辑的接口,你想让客户怎么去调用呢


如果user表有一个字段是isadmin,然后对应类user也有一个属性是isadmin,莫非也放在界面的隐藏域?你真是xxxx!
2 楼 2010-09-10  
07年2月hibernate已经出来好久了吧,配置上关联,组合的对象一定是关联在一起的。
数据库设计并不是暴漏给用户,只是界面而已。如果有远程调用,确实会暴漏给客户,可是暴漏了又有什么问题吗?其实归根暴漏的是业务逻辑,数据库只是你的实现方式恰好和领域模型一致罢了。一个不想给客户看业务逻辑的接口,你想让客户怎么去调用呢
1 楼 2007-04-28  
请问一下,dozer 的哪个版本是支持jdk1.4?

相关推荐

    内含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的拷贝值的功能,不过更强大些。

global site tag (gtag.js) - google analytics
网站地图