zoukankan      html  css  js  c++  java
  • 轻量的映射工具Assionsoft.AssionMapper

    这是一个轻量的映射工具,不可与ORM做比较。它不参与到DB。一般用来配合SqlHelper来使用。目前实现的功能有:DataReader到List的映射、

    DataReader到T的映射、List到List的映射、T到T的映射、T到数据库参数的映射。以上这些都是平时操作数据库工作量最大的部分,而且都是重

    复的没有含量的工作。其实真正写SQL并不占用多少工作量。

         下面来说下如何使用,并写几个各个功能下的使用示例。

         首先下载:Assionsoft.AssionMapper 程序集,所有映射功能全部在这个程序集下面。不需要进行XML的配置。

         1、我们不采取XML配置的映射形式,而是在实体类上标上特性的方式。通过元数据标识映射。比如下面的学生实体:

    [ResultMap("SysNo")]//参与单体DataReader返回映射,如果[ResultMap]无参则默认已属性名匹配
            [ResultsMap("SysNo")]//参与集合DataReader返回映射,如果[ResultMap]无参则默认已属性名匹配
            [ObjectMap]//参与对象映射
            [ParameterMap]//参与数据库参数映射
            public int SysNo { getset; }
            [ResultMap(
    "Name")]//参与单体DataReader返回映射,如果[ResultMap]无参则默认已属性名匹配
            [ResultsMap("Name")]//参与集合DataReader返回映射,如果[ResultMap]无参则默认已属性名匹配
            [ObjectMap]//参与对象映射
            [ParameterMap("Name")]//参与数据库参数映射
            public string Name { getset; }
            [ResultMap(
    "Gender")]//参与单体DataReader返回映射,如果[ResultMap]无参则默认已属性名匹配
            [ResultsMap("Gender")]//参与集合DataReader返回映射,如果[ResultMap]无参则默认已属性名匹配
            [ObjectMap]//参与对象映射
            [ParameterMap]//参与数据库参数映射
            public bool Gender { getset; }
            [ResultMap(
    "Age")]//参与单体DataReader返回映射,如果[ResultMap]无参则默认已属性名匹配
            [ResultsMap("Age")]//参与集合DataReader返回映射,如果[ResultMap]无参则默认已属性名匹配
            [ObjectMap]//参与对象映射
            [ParameterMap]//参与数据库参数映射
            public int Age { getset; }
            [ResultMap(
    "Birthday")]//参与单体DataReader返回映射,如果[ResultMap]无参则默认已属性名匹配
            [ResultsMap("Birthday")]//参与集合DataReader返回映射,如果[ResultMap]无参则默认已属性名匹配
            [ObjectMap]//参与对象映射
            [ParameterMap]//参与数据库参数映射
            public DateTime Birthday { getset; }

           2、数据库插入增、删、改的参数映射,我们通过委托把Common.Parameter.AddWithValue传给方法进行与student的映射。

    Student student = new Student() { Name = "张三", Gender = true, Age = 25, Birthday = DateTime.Now };
                SqlConnection conn 
    = new SqlConnection("server=ASSIONYANG-PCJ\\SQLEXPRESS;uid=sa;pwd=123;database=Testing");
                conn.Open();
                SqlCommand cmd 
    = new SqlCommand();
                cmd.Connection 
    = conn;
                cmd.CommandText 
    = "INSERT INTO ([Name],[Gender],[Age],[Birthday]) VALUES (@Name,@Gender,@Age,@Birthday)";
                ParameterMap.SqlParameterMap
    <Student>(cmd.Parameters.AddWithValue, student);//生成数据库参数
                cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                conn.Close();

                 3、DataReader返回集合的映射

    IList<Student> studentList = new List<Student>();
                SqlConnection conn 
    = new SqlConnection("server=ASSIONYANG-PCJ\\SQLEXPRESS;uid=sa;pwd=123;database=Testing");
                conn.Open();
                SqlCommand cmd 
    = new SqlCommand();
                cmd.Connection 
    = conn;
                cmd.CommandText 
    = "SELECT [SysNo],[Name],[Gender],[Age],[Birthday] FROM Student ORDER BY [SysNo] DESC";
                SqlDataReader dataReader 
    = cmd.ExecuteReader();
                studentList 
    = ResultMap.GetIList<Student>(dataReader);//从DataReader返回实体集合
                dataReader.Close();
                conn.Close();

                   4、DataReader 返回实体的映射

                Student student = new Student();
                SqlConnection conn 
    = new SqlConnection("server=ASSIONYANG-PCJ\\SQLEXPRESS;uid=sa;pwd=123;database=Testing");
                conn.Open();
                SqlCommand cmd 
    = new SqlCommand();
                cmd.Connection 
    = conn;
                cmd.CommandText 
    = "SELECT [SysNo],[Name],[Gender],[Age],[Birthday] FROM Student WHERE [SysNo]=@SysNo";
                ParameterMap.SqlParameterMap
    <Student>(cmd.Parameters.AddWithValue, student);
                SqlDataReader dataReader 
    = cmd.ExecuteReader();
                student 
    = ResultMap.Load<Student>(dataReader);//从DataReader返回单个实体
                dataReader.Close();
                conn.Close();

                    5、集合TO 集合的映射

                IList<Student> studentList = new List<Student>();
                IList
    <Student> studentResultList = new List<Student>();
                studentResultList 
    = ResultMap.GetIList<Student, Student>(studentList);//从集合返回集合

                     6、实体TO 实体的映射

                Student student = new Student();
                Student studentResult 
    = new Student();
                studentResult 
    = ResultMap.Load<Student, Student>(student);//从实体返回实体
  • 相关阅读:
    Building Java Projects with Gradle
    Vert.x简介
    Spring及Spring Boot 国内快速开发框架
    dip vs di vs ioc
    Tools (StExBar vs Cmder)which can switch to command line window on context menu in windows OS
    SSO的定义、原理、组件及应用
    ModSecurity is an open source, cross-platform web application firewall (WAF) module.
    TDD中测试替身学习总结
    Spring事务银行转账示例
    台式机(华硕主板)前面板音频接口(耳机和麦克风)均无声的解决办法
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2042646.html
Copyright © 2011-2022 走看看