`
agapple
  • 浏览: 1596008 次
  • 性别: 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群里面的人和你的博客,觉得很多东西你做过的,我也经历过,并且研究的比我透彻多了。

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

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

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

相关推荐

    智能聊天机器人1.0.1版本

    智能聊天机器人1.0.1版本是一款先进的交互式软件,旨在提供人类与计算机之间的自然语言对话体验。这个机器人利用了人工智能技术,特别是自然语言处理(NLP)和机器学习(ML),来理解和生成人类可理解的对话。在这个...

    p4jorm 1.0.1版本

    总的来说,P4JORM 1.0.1版本的发布是一个积极的步骤,它提升了框架的稳定性和用户体验。对于依赖P4JORM的项目,升级到这个版本不仅可以解决当前存在的问题,还能确保代码遵循最佳实践,为未来的开发和维护打下坚实的...

    简易影视小程序v1.0.1版本新增过审功能源码.zip

    v1.0.1版本更新日志 1.增加激励广告 2.增加插屏广告 3.增加视频贴片广告 4.增加原生广告 5.独立tk框架后台,简易操作 6.增加小程序过审核功能,后台自定义审核页面 7.增加自定义多接口轮播调用

    Win32OpenSSL 1.0.1版本

    Win32OpenSSL_Light-1_0_1.exe,安装后有LIBEAY32.dll

    TensorFlow1.0.1版本的Linux操作系统下载

    本资源提供的是一款适用于Linux操作系统的TensorFlow1.0.1版本,该版本发布于2018年,尽管已经不是最新的版本,但对于某些特定项目或依赖旧环境的需求,仍然具有很高的实用价值。 首先,让我们深入了解一下...

    TensorFlow1.0.1版本的Mac操作系统下载

    在1.0.1版本中,它提供了一套高效、灵活且易于使用的API,使得开发者能够构建复杂的计算图并在各种平台上运行,包括CPU和GPU。在这个特定的场景中,我们关注的是TensorFlow在Mac操作系统的应用。 在Mac上安装...

    hadoop-1.0.1官方版本

    这个【hadoop-1.0.1官方版本】是Hadoop发展早期的一个重要里程碑,尽管相对较老,但对于理解Hadoop的基础架构和原理仍然极具价值。 在分布式系统架构中,Hadoop的核心组件包括HDFS(Hadoop Distributed File System...

    druid数据库连接池1.0.1版本

    druid数据库连接池1.0.1版本 已经用maven编译好jar包可以直接使用.你也可以去官方或git下载http://code.alibabatech.com/wiki/display/Druid/Home https://github.com/AlibabaTech/druid 然后自己编译

    tensorflow1.0.1

    1.0.1是TensorFlow的一个重要版本,提供了稳定性和性能的优化。在这个特定的离线安装包中,它是为Windows 10 64位系统设计的,并且只支持CPU运算,不包含GPU支持。对于那些没有网络连接或者需要在隔离环境中部署...

    openssl 1.0.1u 1.0.1g 1.0.2k windows版本 linux版本

    2. **OpenSSL 1.0.1g**: 这个版本是为解决著名的“心脏出血”(Heartbleed)漏洞而发布的更新。心脏出血是一个严重的安全问题,允许攻击者获取服务器的内存数据,包括私钥和其他敏感信息。1.0.1g 版本修复了该漏洞。...

    简易影视小程序v1.0.1版本新增过审功能

    简易影视小程序v1.0.1版本新增过审功能 v1.0.1版本更新日志 1.增加激励广告 2.增加插屏广告 3.增加视频贴片广告 4.增加原生广告 5.独立tk框架后台,简易操作 6.增加小程序过审核功能,后台自定义审核页面 7.增加...

    简易影视小程序v1.0.1版本新增过审功能源码.txt

    简易影视小程序v1.0.1版本新增过审功能源码.txt

    openssl-1.0.1m版本

    在描述中提到的 "openssl-1.0.1m" 版本是OpenSSL库的一个特定发行版,它可能包含了一些安全更新和性能改进,以适应当时的开发需求。 1. **OpenSSL 的主要功能**: - **加密算法**:OpenSSL 支持大量的对称加密算法...

Global site tag (gtag.js) - Google Analytics