利用反射将Model转化为sql
Posted 许鸿飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用反射将Model转化为sql相关的知识,希望对你有一定的参考价值。
public string GetInsertSqlByModel(Object o) { StringBuilder sbStart = new StringBuilder(); StringBuilder sbFields = new StringBuilder(); StringBuilder sbValues = new StringBuilder(); Type t = o.GetType(); string modelName = t.Name; foreach (PropertyInfo p in t.GetProperties()) { sbFields.Append(p.Name + ","); sbValues.AppendFormat("‘{0}‘,",p.GetValue(o)); } sbStart.AppendFormat("insert into {0}({1}) values({2})",modelName,sbFields.ToString().TrimEnd(‘,‘), sbValues.ToString().TrimEnd(‘,‘)); return sbStart.ToString(); }
如果不需要添加为null或者为空的栏位,则可以使用如下代码
public string GetInsertSqlByModel(Object o) { StringBuilder sbStart = new StringBuilder(); StringBuilder sbFields = new StringBuilder(); StringBuilder sbValues = new StringBuilder(); Type t = o.GetType(); string modelName = t.Name; foreach (PropertyInfo p in t.GetProperties()) { if (p.GetValue(o) == null||string.IsNullOrEmpty(p.GetValue(o).ToString())) { continue; } sbFields.Append(p.Name + ","); sbValues.AppendFormat("‘{0}‘,",p.GetValue(o)); } sbStart.AppendFormat("insert into {0}({1}) values({2})",modelName,sbFields.ToString().TrimEnd(‘,‘), sbValues.ToString().TrimEnd(‘,‘)); return sbStart.ToString(); } }
以上是关于利用反射将Model转化为sql的主要内容,如果未能解决你的问题,请参考以下文章
MySQL利用GROUP_CONCAT()实现一列数据转化为一行数据
MySQL利用GROUP_CONCAT()实现一列数据转化为一行数据