• NBearMapping 开源通用对象映射组件v1.0.0.2 beta 支持枚举类型字段


    NBearMapping是NBearV4框架的组件之一,可以独立使用。可用于任意类型对象、DataRow和DataReader对象间的透明映射。推荐结合NBearLite使用。

    主要功能:

    1、任意类型对象、DataRow和DataReader对象间的透明映射;
    2、支持.NET的Nullable类型;
    3、较高的性能,性能比基于Reflection的等价转换快约50%,手动代码 vs NBearMapping vs Reflection对象转换的执行时间比大约为1:2.5:3.6,可参见源码中MappingTest.TestPerformance() 测试;


    源码、示例及文档下载:

    NBearMapping_v1.0.0.2_beta.zip


    使用演示:

     1        [TestMethod]
     2        public void TestDataRowToObject()
     3        {
     4            ObjectMapper mapper = new ObjectMapper(typeof(DataRow), typeof(User));
     5            mapper.AddCustomMappingName("UserID""ID");
     6            User user = (User)mapper.ConvertObject(table.Rows[0]);
     7            Assert.AreEqual(table.Rows[0]["UserID"], user.ID);
     8            Assert.AreEqual(table.Rows[0]["Name"], user.Name);
     9            User user2 = new User();
    10            mapper.ConvertObject(table.Rows[0], user2);
    11            Assert.AreEqual(table.Rows[0]["UserID"], user2.ID);
    12            Assert.AreEqual(table.Rows[0]["Name"], user2.Name);   
    13        }

    14
    15        [TestMethod]
    16        public void TestDataReaderToObject()
    17        {
    18            ObjectMapper mapper = new ObjectMapper(typeof(IDataReader), typeof(User));
    19            mapper.AddCustomMappingName("UserID""ID");
    20            IDataReader reader = table.CreateDataReader();
    21            reader.Read();
    22            User user = (User)mapper.ConvertObject(reader);
    23            Assert.AreEqual(table.Rows[0]["UserID"], user.ID);
    24            Assert.AreEqual(table.Rows[0]["Name"], user.Name);
    25            User user2 = new User();
    26            IDataReader reader2 = table.CreateDataReader();
    27            reader2.Read();
    28            mapper.ConvertObject(reader2, user2);
    29            Assert.AreEqual(table.Rows[0]["UserID"], user2.ID);
    30            Assert.AreEqual(table.Rows[0]["Name"], user2.Name);        
    31        }

    32
    33        [TestMethod]
    34        public void ObjectToObject()
    35        {
    36            ObjectMapper mapper = new ObjectMapper(typeof(User), typeof(User));
    37            User user = (User)mapper.ConvertObject(user3);
    38            Assert.AreEqual(user3.ID, user.ID);
    39            Assert.AreEqual(user3.Name, user.Name);
    40            User user2 = new User();
    41            mapper.ConvertObject(user3, user2);
    42            Assert.AreEqual(user3.ID, user2.ID);
    43            Assert.AreEqual(user3.Name, user2.Name);        
    44        }

    45
    46        [TestMethod]
    47        public void TestObjectToDataTableDataReaderAndDataRow()
    48        {
    49            ObjectMapper mapper = new ObjectMapper(typeof(User), typeof(DataTable));
    50            mapper.AddCustomMappingName("ID""UserID");
    51            DataTable userTable = (DataTable)mapper.ConvertObject(user3);
    52            Assert.AreEqual(user3.ID, userTable.Rows[0]["UserID"== DBNull.Value ? null : userTable.Rows[0]["UserID"]);
    53            Assert.AreEqual(user3.Name, userTable.Rows[0]["Name"]);
    54            mapper.ConvertObject(user3, userTable);
    55            Assert.AreEqual(user3.ID, userTable.Rows[1]["UserID"== DBNull.Value ? null : userTable.Rows[1]["UserID"]);
    56            Assert.AreEqual(user3.Name, userTable.Rows[1]["Name"]);
    57
    58            mapper = new ObjectMapper(typeof(User), typeof(IDataReader));
    59            mapper.AddCustomMappingName("ID""UserID");
    60            IDataReader reader = (IDataReader)mapper.ConvertObject(user3);
    61            Assert.IsNotNull(reader);
    62
    63            mapper = new ObjectMapper(typeof(User), typeof(DataRow));
    64            mapper.AddCustomMappingName("ID""UserID");
    65            DataRow row = (DataRow)mapper.ConvertObject(user3);
    66            Assert.IsNotNull(row);
    67        }


    修订
    7/26 更新至v1.0.0.1 修复1.0.0.0中的set null值的bug。

    8/6 更新至v1.0.0.2 支持枚举类型字段
  • 相关阅读:
    Java框架spring学习笔记(十七):事务操作
    Java框架spring 学习笔记(十六):c3p0连接池的配置以及dao使用jdbcTemplate
    Java框架spring 学习笔记(十五):操作MySQL数据库
    Java框架spring 学习笔记(十四):注解aop操作
    Java框架spring 学习笔记(十三):log4j介绍
    Java框架spring 学习笔记(十二):aop实例操作
    Java框架spring 学习笔记(十一):aop相关概念
    Java框架spring 学习笔记(十):bean管理(注解和配置文件混合使用)
    Java框架spring 学习笔记(九):Spring的bean管理(@Required、@Component、@Autowired、@Resource注解)
    Java框架spring 学习笔记(八):注入对象类型属性
  • 原文地址:https://www.cnblogs.com/teddyma/p/830863.html
Copyright © 2020-2023  润新知