SQL Table 自动生成Net底层-生成数据操作Repository

生成接口类

        public static string DataTableToBaseIService(string tableName, string nameSpace, string className){var table = SqlTableHelper.GetSQLTableInfo(tableName);StringBuilder reval = new StringBuilder();reval.AppendFormat(@"       
using System;
using System.Collections.Generic;
using System.Data;
using {0}.Mapping;namespace {0}.IService
{{public partial interface {1}{{     /// <summary>/// 保存/// </summary>          int Save({2} model);/// <summary>/// 获取数据(分页)/// </summary>/// <param name=""filterSql"">查询条件</param>/// <param name=""pageIndex"">页码</param>/// <param name=""pageSize"">每页显示数量</param>/// <param name=""total"">总行数</param>/// <param name=""sort"">排序条件</param>/// <returns>返回DataTable</returns>         DataTable PageData(string filterSql,int pageIndex,int pageSize,out int total,string sort="""");/// <summary>/// 获取数据(不分页)/// </summary>         /// <param name=""filterSql"">查询条件</param>/// <param name=""sort"">排序条件</param>/// <returns>返回DataTable</returns>          DataTable PageData(string filterSql,string sort="""");/// <summary>/// 获取单条数据/// </summary>/// <param name=""filterSql"">查询条件</param>/// <returns>返回DataTable</returns>   DataTable GetSingle(string filterSql);/// <summary>/// 删除/// </summary>          int Delete({3} {4});}}
}}", nameSpace, className, tableName, SqlTableToMapping.ChangeType(table.Rows[0]["数据类型"].ToString()), table.Rows[0]["列名"]);return reval.ToString();}public static string DataTableToUserIService(string nameSpace, string className){StringBuilder reval = new StringBuilder();reval.AppendFormat(@"       
using System;
using System.Collections.Generic;
using System.Data;
using {0}.Mapping;namespace {0}.IService
{{public partial interface {1}{{     }}
}}", nameSpace, className);return reval.ToString();}
View Code

实现接口

        #region 生成基础类public static string DataTableToBaseRepository(DataTable dt, string className, string nameSpace){string key = dt.Rows[0]["列名"].ToString();string tableName = dt.Rows[0]["表名"].ToString();StringBuilder reval = new StringBuilder();reval.AppendFormat(@"       
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Data.SqlClient;
using {0}.Mapping;
using {0}.IRepository;
using {0}.Common;namespace {0}.Repository
{{public partial class {1}:I{1}{{public int Save({2} model){{StringBuilder sb = new StringBuilder();   {3}{4}         }}", nameSpace, className, tableName, GetMaxKey(dt), GetAddMethod(dt, key, tableName));//生成分页方法reval.AppendFormat(@"/// <summary>/// 获取数据(分页)/// </summary>/// <param name=""filterSql"">查询条件</param>/// <param name=""pageIndex"">页码</param>/// <param name=""pageSize"">每页显示数量</param>/// <param name=""total"">总行数</param>/// <param name=""sort"">排序条件</param>/// <returns>返回DataTable</returns>   public DataTable PageData(string filterSql, int pageIndex, int pageSize, out int total, string sort = """"){{{0}}}", GetPageMethod(tableName));reval.AppendFormat(@"/// <summary>/// 获取数据(分页)/// </summary>/// <param name=""filterSql"">查询条件</param>/// <param name=""sort"">排序条件</param>/// <returns>返回DataTable</returns>   public DataTable PageData(string filterSql, string sort = """"){{{0}}}", GetListMethod(tableName));reval.AppendFormat(@"/// <summary>/// 获取单条数据/// </summary>/// <param name=""filterSql"">查询条件</param>/// <returns>返回DataTable</returns>   public DataTable GetSingle(string filterSql){{{0}}}", GetSingleMethod(tableName));reval.AppendFormat(@"/// <summary>/// 删除数据/// </summary>/// <param name=""key"">主键</param>/// <returns>返回DataTable</returns>   public int Delete({2} {0}){{{1}}}", key, GetDeleteMethod(tableName, key), SqlTableToMapping.ChangeType(dt.Rows[0]["数据类型"].ToString()));reval.AppendFormat(@"}}
}}");return reval.ToString();}private static string GetMaxKey(DataTable dt){StringBuilder sb = new StringBuilder();sb.AppendFormat(@"sb.AppendFormat("" declare @{0} {1} "");", dt.Rows[0]["列名"], dt.Rows[0]["数据类型"]);sb.AppendFormat(@" sb.AppendFormat("" select @{0}=isnull(max({0}),0)+1 from {1}"");", dt.Rows[0]["列名"], dt.Rows[0]["表名"]);return sb.ToString();}private static string GetAddMethod(DataTable dt, string key, string tableName){StringBuilder sb = new StringBuilder();//新增语句StringBuilder sbAddMethod = new StringBuilder();sbAddMethod.AppendFormat(@"sb.AppendFormat("" insert into {0} (", tableName);//修改语句StringBuilder sbEditMethod = new StringBuilder();sbEditMethod.AppendFormat(@"sb.AppendFormat("" set @{0}=model.{0} "");", key);sbEditMethod.AppendFormat(@" sb.AppendFormat("" update {0} set "");", tableName);StringBuilder sbColumns = new StringBuilder();StringBuilder sbColumnValues = new StringBuilder();//参数StringBuilder sbPara = new StringBuilder();sbPara.AppendFormat(@" var paras = new List<SqlParameter>();");for (var i = 0; i < dt.Rows.Count; i++){sbColumns.AppendFormat(" {0},", dt.Rows[i]["列名"]);if (i == 0){sbColumnValues.AppendFormat(" @{0},", key);}else{sbColumnValues.AppendFormat(" @{0},", dt.Rows[i]["列名"]);sbPara.AppendFormat(@" paras.Add(new SqlParameter(""@{0}"",model.{0}));", dt.Rows[i]["列名"]);}if (i == dt.Rows.Count - 1){sbEditMethod.AppendFormat(@"  sb.AppendFormat("" @{0}={{0}}"",model.{0});", dt.Rows[i]["列名"]);}else{sbEditMethod.AppendFormat(@"  sb.AppendFormat("" @{0}={{0}},"",model.{0});", dt.Rows[i]["列名"]);}}sbColumns = new StringBuilder(sbColumns.ToString().Substring(0, sbColumns.Length - 1));sbColumns.Append(@""");");sbAddMethod.Append(sbColumns);sbAddMethod.AppendFormat(@" sb.AppendFormat("" select @{0},", key);sbColumnValues = new StringBuilder(sbColumnValues.ToString().Substring(0, sbColumnValues.Length - 1));sbColumnValues.Append(@""");");sbAddMethod.Append(sbColumnValues);sbEditMethod.AppendFormat(@" sb.AppendFormat("" where {0}={{0}},"",model.{0});", key);sb.AppendFormat(@"if(model.{0}==0){{{1}}}else{{{2}}}", key, sbAddMethod, sbEditMethod);sb.Append(sbPara);sb.AppendFormat(@" return DbHelperSQL.ExecuteSql(sb.ToString(),paras.ToArray());");return sb.ToString();}private static string GetPageMethod(string tableName){StringBuilder sb = new StringBuilder();sb.AppendFormat(@" string cmdText = ""Proc_UP_Pagination"";DataTable dt = null;SqlParameter[] paras = new SqlParameter[] {{ new SqlParameter(""@TableName"",""{0}""),new SqlParameter(""@Fields"",""*""),new SqlParameter(""@OrderField"",sort),new SqlParameter(""@sqlWhere"",filterSql),new SqlParameter(""@pageSize"",pageSize),new SqlParameter(""@pageIndex"",pageIndex),new SqlParameter(""@Total"",SqlDbType.Int,11),}};paras[6].Direction = ParameterDirection.Output; dt = DbHelperSQL.RunProcedure(cmdText, paras,""{0}"").Tables[0];total = Convert.ToInt32(paras[6].Value);return dt;", tableName);return sb.ToString();}public static string GetListMethod(string tableName){StringBuilder sb = new StringBuilder();sb.AppendFormat(@"string cmdText = string.Empty;DataTable dt = null;cmdText = string.Format(""SELECT * FROM {0} WHERE 1=1"");if (!string.IsNullOrEmpty(filterSql))cmdText += string.Format(""  AND "" + filterSql);if (!string.IsNullOrEmpty(sort))cmdText += string.Format(""  ORDER BY "" + sort);dt = DbHelperSQL.Query(cmdText).Tables[0];return dt;", tableName);return sb.ToString();}public static string GetSingleMethod(string tableName){StringBuilder sb = new StringBuilder();sb.AppendFormat(@"string cmdText = string.Empty;DataTable dt = null;cmdText = string.Format(""SELECT TOP 1 * FROM {0} WHERE 1=1"");if (!string.IsNullOrEmpty(filterSql))cmdText += string.Format(""  AND "" + filterSql);dt = DbHelperSQL.Query(cmdText).Tables[0];return dt;", tableName);return sb.ToString();}public static string GetDeleteMethod(string tableName, string key){StringBuilder sb = new StringBuilder();sb.AppendFormat(@"string cmdText = string.Empty;cmdText = string.Format(""DELETE FROM {0} WHERE {1}=@{1}"");SqlParameter[] paras = new SqlParameter[] {{ new SqlParameter(""@{1}"",{1}),}};var iret = DbHelperSQL.ExecuteSql(cmdText);return iret;", tableName, key);return sb.ToString();}#endregion#region 生成自定义类public static string DataTableToUserRepository(string className, string nameSpace){StringBuilder reval = new StringBuilder();reval.AppendFormat(@"       
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Data.SqlClient;
using {0}.Mapping;namespace {0}.Repository
{{public partial class {1}{{}}", nameSpace, className);return reval.ToString();}#endregion
View Code

 生成Autofac注入类

        public static string AutofaceClass(string nameSpace, DataTable dt){StringBuilder sb = new StringBuilder();sb.AppendFormat(@"
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autofac;
using {0}.Mapping;
using {0}.IRepository;
namespace {0}.Repository
{{public class RepositoryModule : Module{{protected override void Load(ContainerBuilder builder){{", nameSpace);for (var i = 0; i < dt.Rows.Count; i++){sb.AppendFormat(@"builder.RegisterType<{0}>().As<{1}>();", dt.Rows[i]["name"] + "Repository", "I" + dt.Rows[i]["name"] + "Repository");}sb.Append(@"base.Load(builder);}}
}");return sb.ToString();
View Code

 

转载于:https://www.cnblogs.com/plming/p/8033720.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义Spring命名空间使JAXB更容易

首先&#xff0c;让我大声说出来&#xff1a; Spring不再是XML繁重的了 。 事实上&#xff0c;如今&#xff0c;您可以使用大量注释&#xff0c; Java配置和Spring Boot来编写几乎没有XML或根本没有XML的Spring应用程序。 认真地停止谈论Spring和XML&#xff0c;这已经成为过去…

利用锚点再点事吧丨

上图 接着HTML代码&#xff1a; <div id"color"> <div id"red">红</div> <div id"yellow">黄</div> <div id"black">黑</div> <div id"green">绿</div> </div>…

javaweb笔记1

转载于:https://www.cnblogs.com/webdev8888/p/9164291.html

以太网数据帧的报尾封装字段是什么_16、90秒快速“读懂”数据包的封装、解封装...

数据转发过程概述数据包在相同网段内或不同网段之间转发所依据的原理基本一致。一、数据帧封装TCP封装(四层)当主机建立了到达目的地的TCP连接后&#xff0c;便开始对应用层数据进行封装。主机A会对待发送的应用数据首先执行加密和压缩等相关操作&#xff0c;之后进行传输层封装…

CSS基本知识(慕课网)

1、注释 注解&#xff1a;CSS中注释/*这里是注释的文字*/ HTML中注释<!--这里是注释的文字--> 2、外部式css样式&#xff0c;写在单独的一个文件中 注解&#xff1a; 外部式css样式(也可称为外联式)就是把css代码写一个单独的外部文件中&#xff0c;这个css样式文件以“…

JMS和Spring:有时很重要的小事情

JmsTemplate和DefaultMessageListenerContainer是用于访问JMS兼容MOM的Spring帮助器。 他们的主要目标是在JMS API之上形成一层&#xff0c;并处理诸如事务管理/消息确认之类的基础结构&#xff0c;并隐藏JMS API的某些重复和笨拙的部分&#xff08;保留在那里&#xff1a; JMS…

css实现3D立方体旋转特效

先来看运行后出来的效果 它是在不停运行的一个立方体 先来看html部分的代码 <div class"rect-wrap"> <!--舞台元素&#xff0c;设置perspective&#xff0c;让其子元素获得透视效果。--><div class"container"> <!-- 容器&#…

Eclipse中的Tomcat:6个流行的“如何”问题

学习新技术总是一个艰难的过程。 当您尝试学习将要相互交互的两种技术时&#xff0c;此过程将变得更加困难。 Tomcat和Eclipse是Java EE开发中最流行的先决条件。 因此&#xff0c;要成为一名专业的开发人员&#xff0c;您需要知道如何使用此对执行最需要的操作以及如何进行一些…

adc分辨率和精度的区别_科普 | 传感器的灵敏度、分辨率和精度三者之间有何区别?...

传感器作为一种检测装置&#xff0c;具有微型化、数字化、智能化、多功能化、系统化、网络化的特点。在现代工业生产尤其是自动化生产过程中&#xff0c;需要各种传感器来监视和控制生产过程中的各个参数&#xff0c;使设备工作在正常状态或最佳状态&#xff0c;并使产品达到最…

Linux上的HotSpot GC线程CPU占用空间

以下问题将测试您对Linux操作系统上运行的Java应用程序的垃圾回收和高CPU故障排除的知识。 当调查过多的GC和/或CPU利用率时&#xff0c;此故障排除技术尤其重要。 它将假定您没有访问高级监视工具的能力&#xff0c;例如Compuware dynaTrace甚至JVisualVM。 将来会介绍使用此类…

tornado-简介和原理

tornado-设计初衷 1. 追求小而精 2. epoll IO多路复用和协程 3. 支持WebSocket 4. 单线程程序(GIL限制&#xff0c;本身某种意义上不启动多进程就是单线程程序) # Python GIL介绍详情 tronado应用场景 1. 大量的http请求连接(大量的用户请求&#xff0c;要求并发性和高性能) tr…

前端学习笔记--HTTP缓存

原文地址&#xff1a;https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hlzh-cn 缓存并重用之前获取的资源的能力是性能优化的一个关键方面。 每个浏览器都自带了 HTTP 缓存实现功能&#xff0c;只需要确保每个服务…

如何用Veripacks替换构建模块

比较下面的两棵树。 在这两种情况下&#xff0c;目标都是拥有一个具有两个独立模块&#xff08; frontend和reporting &#xff09;和一个共享/公用模块&#xff08; domain &#xff09;的应用程序。 frontend的代码不应访问reporting代码&#xff0c;反之亦然。 两个模块都可…

JS的DOM和BOM

* JavaScript分三个部分: ECMAScript标准:JS的基本的语法DOM:Document Object Model --->文档对象模型----操作页面的元素BOM:Browser Object Model----->浏览器对象模型---操作的是浏览器一、DOM对象 文档:把一个html文件看成是一个文档,由于万物皆对象,所以把这个文档看…

数据库(11)-- Hash索引和BTree索引 的区别

索引是帮助mysql获取数据的数据结构。最常见的索引是Btree索引和Hash索引。 不同的引擎对于索引有不同的支持&#xff1a;Innodb和MyISAM默认的索引是Btree索引&#xff1b;而Mermory默认的索引是Hash索引。 Hash索引 哈希索引包含以数组形式组织的 Bucket 集合。 哈希函数将索…

MySQL的复制:MySQL系列之十三

一、MySQL复制相关概念 主从复制&#xff1a;主节点将数据同步到多个从节点级联复制&#xff1a;主节点将数据同步到一个从节点&#xff0c;其他的从节点在向从节点复制数据同步复制&#xff1a;将数据从主节点全部同步到从节点时才返回给用户的复制策略叫同步复制异步复制&…

将NetBeans代码模板弯曲到我的意愿

任何阅读过我关于NetBeans的文章的人都知道&#xff0c;我真的很喜欢NetBeans的众多功能。 但是&#xff0c;最近&#xff0c;我发现自己对NetBeans特定功能的特定问题越来越恼火。 最终&#xff0c;它使我烦恼不已&#xff0c;促使我开始研究如何根据自己的喜好禁用或更改该功…

MySQL安装过程

最近试着重装了下MySQL&#xff0c;安装过程很简单&#xff0c;希望能帮助大家 mysql安装过程 1. 下载&#xff1a; 我下载的是64位系统的zip包&#xff1a; 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 下载zip的包。 下载后解压到对应目录 如&#xff1a;D:…

极简的MyBatis在Spring Boot下的配置

以我的一个项目为例。 0、项目结构&#xff1a; 1、POM中添加MyBatis的依赖&#xff1a; <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version> …

JPA –我应该成为懒惰的极端主义者吗?

当您与开发人员讨论将对象映射到关系数据库时&#xff0c;他们经常抱怨JPA性能差&#xff0c;JPA提供程序的行为不可预测等。通常&#xff0c;在对话的某些时候&#xff0c;您会听到&#xff1a; “让我们完全放弃这项技术&#xff0c;我们在上个月的会议上看到了更好的东西。 …