之前老大说要改变代码中充斥着各种Select的Sql语句字符串的情况,让我尝试着做一个简单的SqlHelper,要具有以下功能: 1.不要在业务代码中暴露DataTable或者DataSet类型: 2.可以完成Select操作,需要支持条件查询,分页,单条记录查询,排序,连表,单个值: 3.可以完成添加单条记录,添加多条记录,修改记录和删除记录: 4.使用过程中要兼容老代码,既允许直接传入Sql: 5.要同时兼容MySql和Sql Server. 我之前写过很多Linq的代码,对那种函数式编程很…
你知道CSS实现水平垂直居中的第10种方式吗? 仅居中元素定宽高适用: absolute + 负 margin absolute + margin auto absolute + calc 居中元素不定宽高: absolute + transform lineheight writing-mode table css-table flex grid 1.absolute + 负 margin 为了实现上面的效果先来做些准备工作,假设 HTML 代码如下,总共两个元素,父元素和子元素: <div…
之前栈长分享过 Java 8 一系列新特性的文章,其中重点介绍了 Stream. 获取上面这份 Java 8~12 系列新特性干货文章,请在微信搜索关注微信公众号:Java技术栈,在公众号后台回复:java. 今天来分享下在 Java 8 中创建 Stream 的 10 种方式,我就整理了 10 种,其实还有更多,仅供大家参考学习下. 1.Stream.of 可变参数 Stream<String> stream1 = Stream.of("A", "B"…
以下是整个SqlHelper的Demo: public Result<List<ArticleDTO>> GetIndexArticleList(int count, int userID) { var exp = DbUtilityFactory.GetDbUtility().GetSqlExpression<ArticleEntity>(); exp.Where(a => a.userID == userID); exp.OrderByDescending(a…
此类是整个SqlHelper的另一个核心,基本思想就是通过EntityHelper,ObjectHelper和ExpressionHelper获取拼接Select语句的全部元素,拼接出完整Select语句. using System.Collections.Generic; using RA.DataAccess.Common; namespace RA.DataAccess { public partial class SqlSession<T> { public SqlSession()…
这个ExpressionHelper类,是整个SqlHelper中,最核心的一个类,主要功能就是将Lambda表达式转换为Sql语句.同时这个转换过程比较复杂,所以下面详细讲解一下思路和这个类的作用. 0x01基本 在Sql语句中,主要由表名,字段,条件语句等元素组成,而这些元素中,表名,字段可以由实体表示出来,条件语句可以由Lambda表达式表现出来. 在Sql语句中,条件语句可以说是Select中的核心,其中很多功能和Lambda中提供的方法很相似,比如: 实体:…
MySql的数据处理类和Sql Server没有太大差别,从思路上来说没有区别,所以此处只是给出代码,不再多加解释了. using System; using System.Configuration; using MySql.Data.MySqlClient; using RA.DataAccess.Common; namespace RA.DataAccess.MySqlDbUtility { public partial class DbUtility : IDbUtility { pri…
基本思想,将MsSqlDbUtility和MySqlDbUtility设计成单例模式,通过App.config或Web.config进行默认的数据库设置,然后通过DbUtilityFactory获取DbUtility. 1.接口: using System; using System.Collections.Generic; using System.Data; using System.Linq.Expressions; using RA.DataAccess.MsSqlDbUtility;…
ObjectHelper的主要功能有: 1.通过反射获取Entity的实例的字段值和表名,跳过自增键并填入Dictionary<string,string>中. namespace RA.DataAccess.Common { internal static class ObjectHelper { /// <summary> /// 获取Entity实例的字段名和值(用于更新和插入数据) /// </summary> /// <param name="…
这个类基本上就是调用EntityHelper,ExpressionHelper和ObjectHelper来进行各种完整SQL的拼接操作. using System; using System.Configuration; using System.Data.SqlClient; using RA.DataAccess.Common; namespace RA.DataAccess.MsSqlDbUtility { public partial class DbUtility : IDbUtili…
EntityHelper的主要功能有: 1.通过反射获取DTO的字段,主要提供给在需要从Entity获取数据后,填充给DTO并返回的作用: 通过反射获取PropertyInfo[]对象,然后取出Name属性,填入新表. /// <summary> /// 获取DTO字段 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns&g…
对于需求中的不要暴露DataTable或DataSet,我想到了设计中常用的对象:实体(Entity),通过实体将数据库中的字段封装成类,这样做不仅使代码更有可读性,维护起来也很方便.同时我自定义了一些C#特性来表述字段在数据库中的特性. 1.递增键: namespace RA.DataAccess.Attributes { /// <summary> /// 递增键 /// </summary> [AttributeUsage(AttributeTargets.Property,…
我实现了一个简单的EF框架,主要用于操纵数据库.实现了对数据库的基本操纵--CRUD 这是项目结构 这是一个 core 下的 DLL 写了一个数据库工厂,用于执行sql语句.调用sql语句工厂 写了一个sql语句工厂,用于生成sql语句.调用类型工厂 写了一个类型工厂,用于获取所需的类型,识别特性等. appsettings.json是配置文件 最后一个是使用说明 我实现过程的首先从底层开始. 首先写的是类型工厂 结构 BaseTypeHelper.cs 是基础的类型帮助类 TypeHelper…
我实现了一个简单的EF框架,主要用于操纵数据库.实现了对数据库的基本操纵--CRUD 这是项目结构 这是一个 core 下的 DLL 写了一个数据库工厂,用于执行sql语句.调用sql语句工厂 写了一个sql语句工厂,用于生成sql语句.调用类型工厂 写了一个类型工厂,用于获取所需的类型,识别特性等. appsettings.json是配置文件 最后一个是使用说明 我实现过程的首先从底层开始. 首先写的是类型工厂 结构 BaseTypeHelper.cs 是基础的类型帮助类 TypeHelper…
说起反射之前和很多用C#/.net的同仁们一样,相比于一般应用层对数据的增删改查总有点觉得深奥到难以理解.其实程序这东西,用过.实践过就很简单,我一直这么认为. 先说下概念:反射 Reflection是.Net中获取运行时类型信息的方式,.Net的应用程序主要由:程序集(Assembly),模块(Module),类型(class)组成,而发射提供一种编程的方式,可以在程序运行时获取这几部分的信息. Assembly可以获取正在运行的装配信息,也可以动态加载装配件以及在装配中查找类型信息,并创建该…
如果做开发的工作,工厂设计模式大概都已经深入人心了,比较常见的例子就是在代码中实现数据库操作类,考虑到后期可能会有数据库类型变换或者迁移,一般都会对一个数据库的操作类抽象出来一个接口,然后用工厂去获取实际数据库操作类实例. 下面举一个最简单的工厂模式例子: interface IAnimal { void talk(); } class Cat implements IAnimal { @Override public void talk() { System.out.println("I'm…
最近做了一个.Net Core环境下,基于NPOI的Excel导入导出以及Word操作的服务封装,涉及到大量反射操作,在性能优化过程中使用到了表达式树,记录一下. Excel导入是相对比较麻烦的一块,实现的效果是:调用方只需要定义一个类,只需要标记特性,服务读取Excel=>校验(正则.必填.整数范围.日期.数据库是否存在.数据重复) =>将校验结果返回 => 提供方法将Excel数据转换为指定类集合. 在最后一步转换,最开始用反射实现,性能较差:后来通过了反射+委托,表达式树方式进行优…
http://bbs.itcast.cn/thread-25990-1-1.html?xhw 1. 反盗链那些盗用了你的内容,还不愿意自己存储图片的网站是很常见的.你可以通过以下配置来放置别人盗用你的图片: 本帖隐藏的内容 RewriteBase / RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?itcast.com/.*$ [NC] RewriteRule .(gif|jpg|swf|fl…
今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求为一个具体的功能页面 /// </summary> public class AdminActionMethod : Attribute { /// <summary> /// 页面请求路径 /// </summary> public string ActionUrl {…
using System.Data.SqlClient;using System.Configuration;引用:System.Configuration 连接字符串放到配置文件中 新建一个类,写如下些方法,进行数据的操作 // ExecuteNonQuery 构建 public static int ExecuteNonQuery(string sql,params SqlParameter[] parameters) { string Str = ConfigurationManager.…
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; namespace AddressBook { class SqlHelper { /// <summary> /// 连接数据库的字符串 /// </summary> private static string co…
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace H.DAL { /// <summary> /// 数据库操作帮助类 /// 此段基础代码为SQLServer数据库帮助类 /// 如需操作MySQL…
地址:http://www.cnblogs.com/guomingfeng/tag/Expression%E5%BA%8F%E5%88%97%E5%8C%96/…
任务说明:开始普及组的训练!所谓模拟,就是直接根据题意编写,思维难度简单. 铺地毯 进制转换 多项式输出 机器翻译 排座椅 笨小猴 都是简单模拟题  …
火星人 麦森数 P1403 [AHOI2005]约数研究 f(n)表示n的约数个数,现在给出n,要求求出f(1)到f(n)的总和. 解答:有几个1做约数的个数 = n /1; 有几个2做约数的个数 = n /2; 有几个3做约数的个数 = n /3; 所以直接 对 n / i 求和就是答案. #include <cstdio> #include <iostream> #include <cstdlib> #include <cmath> using name…
内容来自: 10 Ways to Generate a Random Password from the Linux Command Line Linux 好玩的事儿是达成一件事情可以用上百种方式. 即使如生成随机密码这么简单的需求都可以用一打的命令来实现. 这些命令从 Command-Line Fu 搜集而来, 而且都在 Linux 上验证了这些命令没有问题. 生成密码 对于这些生成随机数的命令, 可以调整以输出不同长度的密码. 当然, 你可以使用第一个 x 符号来生成密码, 如果你不需要这么…
前言 随着.Net6的发布,微软也改进了对之前ASP.NET Core构建方式,使用了新的Minimal API模式.之前默认的方式是需要在Startup中注册IOC和中间件相关,但是在Minimal API模式下你只需要简单的写几行代码就可以构建一个ASP.NET Core的Web应用,真可谓非常的简单,加之配合c#的global using和Program的顶级声明方式,使得Minimal API变得更为简洁,不得不说.NET团队在,NET上近几年真是下了不少功夫,接下来我们就来大致介绍下这…
虽然特别简单,但是对于小白来说,还是有必要过一下脑子和眼睛,当然还得过手(江湖传言:眼过千变,不如手过一遍),所以记录在此: #include "tablewidgetxxx.h" #include <QtGui/QApplication> #include <QtGui/QListWidget> #include <QtGui/QSplitter> int main(int argc, char *argv[]) { QApplication ap…
这几天比较受关注,挺开心的,嘿嘿. 这里给大家总结一下学习自定义view的一些技巧.  以后写自定义view可能不会写博客了,但是可以开源的我会把源码丢到github上我的地址:https://github.com/githubwing 每一篇博客都是建立在之前博客的基础知识上的,如果你刚接触自定义view.可以来说说自定义view简单学习的方式这里看我以前的文章.记录了我学习自定义view的过程,而且前几篇博客或多或少犯了一些错误(重复绘制,onDraw里new对象等等).这里我并不想改正博文…
这种方式仅适合于比较小的项目,例如只有一两台服务器,而且配置文件是可以直接修改的.例如 Spring mvc 以 war 包的形式部署,可以直接修改resources 中的配置文件.如果是 Spring boot 项目,还想用这种方式的话,就要引用一个外部可以编辑的文件,比如一个固定的目录,因为 spring boot 大多数以 jar 包部署,打到包里的配置文件没办法直接修改.如果是比较大的项目,最好还是用配置中心,例如携程的 Apollo.Consul 等. 原始方式 原始方式指的是每次要修…