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


猜你喜欢

转载自agapple.iteye.com/blog/1387606