谁有ibatis xml文件(.net)  代码生成工具?

解决方案 »

  1.   

    using System;
    using System.Linq;
    using System.IO;
    using System.Text;
    using System.Web;
    using System.Web.Services;
    using System.Collections;
    using System.Data;
    using System.Collections.Generic;
    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Json;
    using System.Web.Script.Serialization;namespace FlexiGridDemo.tester
    {
        public class JsonHelper
        {
            /// <summary>
            /// JSON序列化与反序列化辅助类
            /// </summary>
            public static string Serialize<T>(T data)
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(data.GetType());
                using (MemoryStream ms = new MemoryStream())
                {
                    serializer.WriteObject(ms, data);
                    return Encoding.UTF8.GetString(ms.ToArray());
                }
            }        public static T Deserialize<T>(string json)
            {
                T obj = Activator.CreateInstance<T>();
                using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
                {
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
                    return (T)serializer.ReadObject(ms);
                }
            }        public static string CreateJsonParameters(DataTable dt)
            {
                StringBuilder JsonString = new StringBuilder();   
                if (dt != null && dt.Rows.Count > 0)
                {
                    JsonString.Append("{ ");
                    JsonString.Append("\"Head\":[ ");
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        JsonString.Append("{ ");
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
                            if (j < dt.Columns.Count - 1)
                            {
                                JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\",");
                            }
                            else if (j == dt.Columns.Count - 1)
                            {
                                JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\"");
                            }
                        }
                        if (i == dt.Rows.Count - 1)
                        {
                            JsonString.Append("} ");
                        }
                        else
                        {
                            JsonString.Append("}, ");
                        }
                    }
                    JsonString.Append("]}");
                    return JsonString.ToString();
                }
                else
                {
                    return null;
                }
            }        public static string CreateJsonData(DataTable dt)
            {
                StringBuilder JsonString = new StringBuilder();   
                if (dt.Rows.Count > 0)
                {
                    JavaScriptSerializer js = new JavaScriptSerializer();
                    JsonString.AppendFormat(js.Serialize(dt).ToString());
                }
                return JsonString.ToString();
            }        private static List<Dictionary<string, object>> RowsToDictionary(DataTable table)
            {
                List<Dictionary<string, object>> objs = new List<Dictionary<string, object>>();
                foreach (DataRow dr in table.Rows)
                {
                    Dictionary<string, object> drow = new Dictionary<string, object>();
                    for (int i = 0; i < table.Columns.Count; i++)
                    {
                        drow.Add(table.Columns[i].ColumnName, dr[i]);
                    }
                    objs.Add(drow);
                }
                return objs;
            }        public static Dictionary<string, object> ToJson(DataTable table)
            {
                Dictionary<string, object> d = new Dictionary<string, object>();
                d.Add(table.TableName, RowsToDictionary(table));
                return d;
            }        public static Dictionary<string, object> ToJson(DataSet data)
            {
                Dictionary<string, object> d = new Dictionary<string, object>();
                foreach (DataTable table in data.Tables)
                {
                    d.Add(table.TableName, RowsToDictionary(table));
                }
                return d;
            }     }
    }
      

  2.   

    IBatisNet不能直接返回DataSet,DataTable,而且需要对象层,才能调用,当然,其实你可以传入Hashtable可以用CodeSmith模板生成xml和对象层可以去www.cnblogs.com/mail-ricklee上下载fortuneBaseFortuneBase2(Oracle11g)\FortuneLibrary\CodeSmith\Fortune(Oracle)
    路径为CodeSmith模板,足够生成xml和对象层