`
agapple
  • 浏览: 1583056 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

BeanMapping发布1.0.1版本

阅读更多

背景

  BeanMapping是什么? 请查看我之前的一篇文章:  我也造了个轮子:BeanMapping(属性拷贝) 

现状

  目前代码经过在一个实际项目中进行试用,该项目为公司的核心业务逻辑(产品页面数据),目前表现良好。 

 

  在原先的1.0.0版本基础上修复了几个bug,目前推荐使用1.0.1。 

下载

url : https://github.com/agapple/mapping4java/tags

mvn仓库:

 <dependency>
	<groupId>com.googlecode.mapping4java</groupId>
	<artifactId>mapping</artifactId>
	<version>1.0.1</version>
</dependency>

Example1:

Step 1 (define mapping config)

<bean-mappings xmlns="http://mapping4java.googlecode.com/schema/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://mapping4java.googlecode.com/schema/mapping http://mapping4java.googlecode.com/svn/trunk/src/main/resources/META-INF/mapping.xsd">  
        <!--  (bean-bean) mapping 测试 -->  
        <bean-mapping batch="true" srcClass="com.agapple.mapping.object.SrcMappingObject" targetClass="com.agapple.mapping.object.TargetMappingObject" reversable="true">  
            <field-mapping srcName="intValue" targetName="intValue" />  
            <field-mapping targetName="integerValue" script="src.intValue + src.integerValue" /> <!-- 测试script -->  
            <field-mapping srcName="start" targetName="start" />  
            <field-mapping srcName="name" targetName="targetName" /> <!--  注意不同名 -->  
            <field-mapping srcName="mapping" targetName="mapping" mapping="true" />  
        </bean-mapping>  

        <bean-mapping batch="true" srcClass="com.agapple.mapping.object.NestedSrcMappingObject" targetClass="com.agapple.mapping.object.NestedTargetMappingObject" reversable="true">  
            <field-mapping srcName="name" targetName="name" defaultValue="ljh" /> <!-- 测试default value -->  
            <field-mapping srcName="bigDecimalValue" targetName="value" targetClass="string" defaultValue="10" /> <!-- 测试不同名+不同类型+default value  -->  
        </bean-mapping>  

    </bean-mappings>

Step 2 (do mapping) 

public BeanMapping srcMapping    = BeanMapping.create(SrcMappingObject.class, TargetMappingObject.class);  
public BeanMapping targetMapping = BeanMapping.create(TargetMappingObject.class , SrcMappingObject.class);  

    @Test  
    public void testBeanToBean_ok() {  
        SrcMappingObject srcRef = new SrcMappingObject();  
        srcRef.setIntegerValue(1);  
        srcRef.setIntValue(1);  
        srcRef.setName("ljh");  
        srcRef.setStart(true);  

        TargetMappingObject targetRef = new TargetMappingObject();// 测试一下mapping到一个Object对象  
        srcMapping.mapping(srcRef, targetRef);  

        SrcMappingObject newSrcRef = new SrcMappingObject();// 反过来再mapping一次  
        targetMapping.mapping(targetRef, newSrcRef);  
    }

Example2: (和BeanUtils/BeanCopier一样的使用,根据同名属性进行自动映射,不需要定义任何的mapping.xml)

public BeanCopy srcCopy    = BeanCopy.create(SrcMappingObject.class, TargetMappingObject.class);  
    public BeanCopy targetCopy = BeanCopy.create(TargetMappingObject.class , SrcMappingObject.class);  

    @Test  
    public void testBeanToBean_ok() {  
        SrcMappingObject srcRef = new SrcMappingObject();  
        srcRef.setIntegerValue(1);  
        srcRef.setIntValue(1);  
        srcRef.setName("ljh");  
        srcRef.setStart(true);  

        TargetMappingObject targetRef = new TargetMappingObject();// 测试一下mapping到一个Object对象  
        srcCopy.copy(srcRef, targetRef);  

        SrcMappingObject newSrcRef = new SrcMappingObject();// 反过来再mapping一次  
        targetCopy.copy(targetRef, newSrcRef);  
    }

Example3: (和BeanUtils一样,处理map<->bean)

 public BeanMap beanMap = BeanMap.create(SrcMappingObject.class);

    @Test
    public void testDescribe_Populate_ok() {
        SrcMappingObject srcRef = new SrcMappingObject();
        srcRef.setIntegerValue(1);
        srcRef.setIntValue(1);
        srcRef.setName("ljh");
        srcRef.setStart(true);

        Map map = beanMap.describe(srcRef);
        
        SrcMappingObject newSrcRef = new SrcMappingObject();// 反过来再mapping一次
        beanMap.populate(newSrcRef, map);
    }

其他

ChangeLog

 

Release 1.0.1
	"this" symbol GetExecutor bugfix
	boolean isSuccessed generated set/get methods for the isSucessed()/setSuccessed(), should filter attribute is the prefix
	Add date and sqlDate convertor
	Add String and Enum convertor
	Add mapping.propertis define ValueProcess plugins

Release 1.0.0
	Initial mapping code


分享到:
评论
2 楼 agapple 2012-02-02  
diyunpeng 写道
javaeye一直关注JVM群里面的人和你的博客,觉得很多东西你做过的,我也经历过,并且研究的比我透彻多了。

今天下午没事,阅读了一遍源代码,可是累死我了。

希望能够持续总结,让更多的人用。

轮子造了,怎么也得让许多人去开啊


多谢支持啊。轮子已经在公司上用开了。

技术学习贵在坚持,做产品也是如此,有时间可以多多交流哈
1 楼 diyunpeng 2012-02-01  
javaeye一直关注JVM群里面的人和你的博客,觉得很多东西你做过的,我也经历过,并且研究的比我透彻多了。

今天下午没事,阅读了一遍源代码,可是累死我了。

希望能够持续总结,让更多的人用。

轮子造了,怎么也得让许多人去开啊

相关推荐

Global site tag (gtag.js) - Google Analytics