BeanMapping发布1.0.1版本

背景

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

现状

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

 

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

下载

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

mvn仓库:

1. <dependency>
2.    <groupId>com.googlecode.mapping4java</groupId>
3.    <artifactId>mapping</artifactId>
4.    <version>1.0.1</version>
5.</dependency>  

Example1:

Step 1 (define mapping config)

1.<bean-mappings xmlns="http://mapping4java.googlecode.com/schema/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2.        xsi:schemaLocation="http://mapping4java.googlecode.com/schema/mapping http://mapping4java.googlecode.com/svn/trunk/src/main/resources/META-INF/mapping.xsd">
3.        <!--  (bean-bean) mapping 测试 -->
4.        <bean-mapping batch="true" srcClass="com.agapple.mapping.object.SrcMappingObject" targetClass="com.agapple.mapping.object.TargetMappingObject" reversable="true">
5.            <field-mapping srcName="intValue" targetName="intValue" />
6.            <field-mapping targetName="integerValue" script="src.intValue + src.integerValue" /> <!-- 测试script -->
7.            <field-mapping srcName="start" targetName="start" />
8.            <field-mapping srcName="name" targetName="targetName" /> <!--  注意不同名 -->
9.            <field-mapping srcName="mapping" targetName="mapping" mapping="true" />
10.        </bean-mapping>
11.
12.        <bean-mapping batch="true" srcClass="com.agapple.mapping.object.NestedSrcMappingObject" targetClass="com.agapple.mapping.object.NestedTargetMappingObject" reversable="true">
13.            <field-mapping srcName="name" targetName="name" defaultValue="ljh" /> <!-- 测试default value -->
14.            <field-mapping srcName="bigDecimalValue" targetName="value" targetClass="string" defaultValue="10" /> <!-- 测试不同名+不同类型+default value  -->
15.        </bean-mapping>
16.
17.    </bean-mappings>  

Step 2 (do mapping) 

1.public BeanMapping srcMapping    = BeanMapping.create(SrcMappingObject.class, TargetMappingObject.class);
2.public BeanMapping targetMapping = BeanMapping.create(TargetMappingObject.class , SrcMappingObject.class);
3.
4.    @Test
5.    public void testBeanToBean_ok() {
6.        SrcMappingObject srcRef = new SrcMappingObject();
7.        srcRef.setIntegerValue(1);
8.        srcRef.setIntValue(1);
9.        srcRef.setName("ljh");
10.        srcRef.setStart(true);
11.
12.        TargetMappingObject targetRef = new TargetMappingObject();// 测试一下mapping到一个Object对象
13.        srcMapping.mapping(srcRef, targetRef);
14.
15.        SrcMappingObject newSrcRef = new SrcMappingObject();// 反过来再mapping一次
16.        targetMapping.mapping(targetRef, newSrcRef);
17.    }

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

1.public BeanCopy srcCopy    = BeanCopy.create(SrcMappingObject.class, TargetMappingObject.class);
2.    public BeanCopy targetCopy = BeanCopy.create(TargetMappingObject.class , SrcMappingObject.class);
3.
4.    @Test
5.    public void testBeanToBean_ok() {
6.        SrcMappingObject srcRef = new SrcMappingObject();
7.        srcRef.setIntegerValue(1);
8.        srcRef.setIntValue(1);
9.        srcRef.setName("ljh");
10.        srcRef.setStart(true);
11.
12.        TargetMappingObject targetRef = new TargetMappingObject();// 测试一下mapping到一个Object对象
13.        srcCopy.copy(srcRef, targetRef);
14.
15.        SrcMappingObject newSrcRef = new SrcMappingObject();// 反过来再mapping一次
16.        targetCopy.copy(targetRef, newSrcRef);
17.    }  

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

1.<span style="white-space: normal;"> <span style="white-space: pre;">public BeanMap beanMap = BeanMap.create(SrcMappingObject.class);
2.</span></span>
3.    @Test
4.    public void testDescribe_Populate_ok() {
5.        SrcMappingObject srcRef = new SrcMappingObject();
6.        srcRef.setIntegerValue(1);
7.        srcRef.setIntValue(1);
8.        srcRef.setName("ljh");
9.        srcRef.setStart(true);
10.
11.        Map map = beanMap.describe(srcRef);
12.
13.        SrcMappingObject newSrcRef = new SrcMappingObject();// 反过来再mapping一次
14.        beanMap.populate(newSrcRef, map);
15.    }  

其他

ChangeLog

1.Release 1.0.1
2.    "this" symbol GetExecutor bugfix
3.    boolean isSuccessed generated set/get methods for the isSucessed()/setSuccessed(), should filter attribute is the prefix
4.    Add date and sqlDate convertor
5.    Add String and Enum convertor
6.    Add mapping.propertis define ValueProcess plugins
7.
8.Release 1.0.0
9.    Initial mapping code
时间: 2024-09-16 23:06:50

BeanMapping发布1.0.1版本的相关文章

BeanMapping发布1.0.2版本

背景   BeanMapping是什么? 请查看我之前的一篇文章:  我也造了个轮子:BeanMapping(属性拷贝)  版本变更内容   convetor包名重构,拼写错误   ScriptExecutor接口重构,加上ScriptContext操作   FiledSetExecutor去除对args的强制匹配依赖   mapping支持name定义   mapping支持嵌套映射/集合映射对象的name定义   增加NullSymbolGetExecutor的实现,支持无源属性的映射 相比

易信发布2.0全新版本新增免费通话功能

中介交易 SEO诊断淘宝客 站长团购 云主机 技术大厅 1月22日,中国电信和网易联合推出的"易信"正式发布2.0新版本,新版本最大变化是增加了免费通话功能,不限国内国外,在网络条件通畅的情况下所有地区均可使用,通过该功能,易信好友间可直接进行通话. 图1易信新版本--免费通话界面 据易信相关负责人介绍,易信的免费通话即通过网络数据交换进行语音通话.目前Android用户已可升级新版本进行体验,iOS版本也已提交审核,预计将很快发布. 图2易信对话界面新增免费通话按钮 据介绍,易信新版

【软件周刊第 31 期】Node.js 发布 v8.0.0 正式版;Qt 5.9 正式发布,长期支持版本

摘要: 软件周刊(05.28 - 06.03):本周热门软件更新 - Node.js 发布 v8.0.0 正式版:npm v5.0.0 正式发布,改进了稳定性:Qt 5.9 正式发布,长期支持版本:Dotty 0.1.2-RC1 发布,Scala 的下一代编译器:Linux Mint 18.2 Sonya 将于 6 月上旬发布公测版本 Node.js 发布 v8.0.0 正式版 新版带来了一系列重大的变化和新功能,Node.js v8 将在 2017 年 10 月进入长期支持(LTS)版本阶段.

基于Web的3D绘图标准-WebGL发布1.0版本

Khronos 组织在http://www.aliyun.com/zixun/aggregation/5469.html">游戏开发者大会发布了 WebGL 规范 1.0 正式版本,该版本带来了全新的 OpenGL ES 2.0,使得浏览器可通过 HTML5 和 JavaScript 进行识别,这表明 WebGL 将逐渐进入我们的视野.WebGL 是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个J

MessagePack 的 C 实现发布 1.0.0 版本

MessagePack 的 C 实现发布 1.0.0 版本 MessagePack是一个基于二进制高效的对象序列化类库,可用于跨语言通信.它可以像JSON那样,在许多种语言之间交换结构对象:但是它比JSON更快速也更轻巧.支持Python.Ruby.Java.C/C++等众多语言.比Google Protocol Buffers还要快4倍. 示例代码: #include <msgpack.h> #include <stdio.h> int main(void) { / msgpac

xmemcached发布1.0版本

xmemcached发布1.0稳定版,下载地址这里.     相比于1.0-beta版本,这个released版本的主要改进如下: 1.xmemcached跟yanf4j都是默认采用common-logging,你可以使用log4j,也可以默认使用jdk的日志库.1.0添加了log4j的配置和依赖包.log4j的性能比jdk自带的日志库性能好多了. 2.添加了BufferAllocator接口,用于分配ByteBufferWrapper,ByteBufferWrapper顾名思义就是ByteBu

Visual Studio Code 的 PowerShell 扩展发布 1.0 版本

PowerShell 团队在其博客上宣布 Visual Studio Code 的 PowerShell 扩展已发布 1.0 版本.官方表示已面向 PowerShell Core 6.0 Beta.1 版本推送了更新,并希望为所有支持的平台提供官方的 PowerShell 开发体验: Windows 7 至 10 可使用 PowerShell v3 或更高版本 Linux 可使用 PowerShell v6 (所有支持 PowerShell 的发行版) macOS 和 OS X 可使用 Powe

ThinkPHP 5.0.1版本发布,小版本大更新

喜迎国庆,ThinkPHP5.0.1版本发布,提前祝TPer国庆佳节快乐,事业顺利,用ThinkPHP开发更健康^_^ ThinkPHP V5.0--为API开发而设计的高性能框架hinkPHP5.0版本是一个颠覆和重构版本,官方团队历时十月,倾注了大量的时间和精力,采用全新的架构思想,引入了更多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载,支持composer,并针对API开发做了大量的优化,包括路由.日志.异常.模型.数据库.模板引擎和验证等模块都已经重构,不适合原有3.2项

微软发布TypeScript 2.0 RC版本

微软释放了TypeScript 2.0的发布候选版本,包含了tagged union功能以及对globs的支持. 在微软博客的声明中,TypeScript的项目主管Daniel Rosenwasser这样说到: "这个RC版本能够帮助我们了解完整的2.0版本会是什么样子,我们正在寻求广泛的反馈,使其更加稳定,从而让2.0成为一个可靠的发布版本.整体而言,对于通常的使用来说,这个RC版本足够稳定,从这个时间点开始,我们不会再添加重要的新特性了." 其实,从2.0 beta版本发布到现在,