dapper 操作类封装
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SQLite;
using System.Linq;
using System.Text;
using Dapper;
using PaiXie.Utils;
namespace PaiXie.Pos.Client.Core
{
public class Data<T> where T : class
{
#region 构造函数 private static Data<T> _instance;
public static Data<T> GetInstance()
{
if (_instance == null)
{
_instance = new Data<T>();
}
return _instance;
} #endregion /// <summary>
/// 分页列表
/// </summary>
/// <param name="data"></param>
/// <param name="model"></param>
/// <param name="count"></param>
/// <param name="context"></param>
/// <param name="transaction"></param>
/// <returns></returns>
public List<T> GetQueryManyForPage(SelectBuilder data, T model, out int count, SQLiteConnection context = null, IDbTransaction transaction = null)
{
if (context == null) context = Db.GetInstance().Context();
string sqlStr = Db.GetInstance().GetSqlForSelectBuilder(data);
string sqlStrCount = Db.GetInstance().GetSqlForTotalBuilder(data);
List<T> list = context.Query<T>(sqlStr, model, transaction).ToList();
count = ZConvert.StrToInt(context.ExecuteScalar(sqlStrCount, model, transaction), );
return list;
}
/// <summary>
/// 添加
/// </summary>
/// <param name="query"></param>
/// <param name="model"></param>
/// <param name="context"></param>
/// <param name="transaction"></param>
/// <returns></returns>
public int Add(string query, T model, SQLiteConnection context = null, IDbTransaction transaction = null)
{
if (context == null) context = Db.GetInstance().Context();
// query += " ; select last_insert_rowid() newid";
// string id = context.ExecuteScalar(query, model, transaction).ToString();
// return ZConvert.StrToInt(id, 0);
int id = context.Execute(query, model, transaction);
return id;
} /// <summary>
/// 修改
/// </summary>
/// <param name="query"></param>
/// <param name="model"></param>
/// <param name="context"></param>
/// <param name="transaction"></param>
/// <returns></returns>
public int Update(string query, T model, SQLiteConnection context = null, IDbTransaction transaction = null)
{
if (context == null) context = Db.GetInstance().Context();
int id = context.Execute(query, model, transaction);
return id;
}
/// <summary>
/// 删除
/// </summary>
/// <param name="tablename"></param>
/// <param name="wheresql"></param>
/// <param name="model"></param>
/// <param name="context"></param>
/// <param name="transaction"></param>
/// <returns></returns>
public int Delete(string tablename, string wheresql, T model, SQLiteConnection context = null, IDbTransaction transaction = null)
{
if (context == null) context = Db.GetInstance().Context();
string query = "DELETE FROM " + tablename + " WHERE " + wheresql;
int id = context.Execute(query, model, transaction);
return id;
}
/// <summary>
/// 获取单个实体
/// </summary>
/// <param name="tablename"></param>
/// <param name="wheresql"></param>
/// <param name="model"></param>
/// <param name="context"></param>
/// <param name="transaction"></param>
/// <returns></returns>
public T GetModel(string tablename, string wheresql, T model, SQLiteConnection context = null, IDbTransaction transaction = null)
{
if (context == null) context = Db.GetInstance().Context();
string query = "SELECT * FROM " + tablename + " WHERE " + wheresql + " LIMIT 0,1";
T obj = context.Query<T>(query, model, transaction).SingleOrDefault();
return obj;
} /// <summary>
/// 实体列表
/// </summary>
/// <param name="query"></param>
/// <param name="model"></param>
/// <param name="context"></param>
/// <param name="transaction"></param>
/// <returns></returns>
public List<T> GetModelList(string query, T model, SQLiteConnection context = null, IDbTransaction transaction = null)
{
if (context == null) context = Db.GetInstance().Context();
List<T> list = context.Query<T>(query, model, transaction).ToList();
return list;
} }
}
using System;
using System.Collections.Generic;
using System.Data.SQLite;
using System.Linq;
using System.Text;
using Dapper;
using System.Windows.Forms;
namespace PaiXie.Pos.Client.Core {
public class Db { #region 构造函数 private static Db _instance;
public static Db GetInstance() {
if (_instance == null) {
_instance = new Db();
}
return _instance;
} #endregion #region Context
public SQLiteConnection Context() {
SQLiteConnectionStringBuilder sb = new SQLiteConnectionStringBuilder();
sb.DataSource =
@"//10.0.0.105/db/DB.s3db";
// Application.StartupPath + @"\Data.dll";//DB.db3
SQLiteConnection con = new SQLiteConnection(sb.ToString());
return con;
}
#endregion #region 分页语句拼接
public string GetSqlForSelectBuilder(SelectBuilder data) {
var sql = "";
sql = "select " + data.Select;
sql += " from " + data.From;
if (data.WhereSql.Length > )
sql += " where " + data.WhereSql;
if (data.GroupBy.Length > )
sql += " group by " + data.GroupBy;
if (data.Having.Length > )
sql += " having " + data.Having;
if (data.OrderBy.Length > )
sql += " order by " + data.OrderBy;
if (data.PagingItemsPerPage >
&& data.PagingCurrentPage >
) {
sql += string.Format(" limit {0} offset {1}", data.PagingItemsPerPage, ((data.PagingCurrentPage * data.PagingItemsPerPage) - data.PagingItemsPerPage + ) - );
}
return sql;
}
public string GetSqlForTotalBuilder(SelectBuilder data) {
var sql = "";
sql = "select count(*)";
sql += " from " + data.From;
if (data.WhereSql.Length > )
sql += " where " + data.WhereSql;
return sql;
}
#endregion } #region SelectBuilder
public class SelectBuilder {
public int PagingCurrentPage { get; set; }
public int PagingItemsPerPage { get; set; } private string _Having = "";
public string Having {
set { _Having = value; }
get { return _Having; }
} private string _GroupBy = "";
public string GroupBy {
set { _GroupBy = value; }
get { return _GroupBy; }
} private string _OrderBy = "";
public string OrderBy {
set { _OrderBy = value; }
get { return _OrderBy; }
} private string _From = "";
public string From {
set { _From = value; }
get { return _From; }
} private string _Select="";
public string Select {
set { _Select = value; }
get { return _Select; }
} private string _WhereSql="";
public string WhereSql {
set { _WhereSql = value; }
get { return _WhereSql; }
} }
#endregion
}
dapper 操作类封装的更多相关文章
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
XML序列化 #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...
- c# 封装Dapper操作类
using Dapper; using DapperExtensions; using System.Collections.Generic; using System.Configuration; ...
- 基于 Aspose.Cells与XML导入excel 数据----操作类封装
前言 导入excel数据, 在每个项目中基本上都会遇到,第三方插件或者基于微软office,用的最多的就是npoi,aspose.cells和c#基于office这三种方式,其中各有各的优缺点,在这也 ...
- php-redis 操作类 封装
<?php /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时,才会返回false. * 这点可用于防止缓存穿透 * */ cla ...
- 【PHP+Redis】 php-redis 操作类 封装
<?php /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时,才会返回false. * 这点可用于防止缓存穿透 * */ cla ...
- websql操作类封装
在之前,我写了一个websql的封装类库,代码如下: (function(win) { function smpWebSql(options){ options = options || {}; th ...
- c# Lambda操作类封装
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...
- [No0000DE]C# XmlHelper XML类型操作 类封装
using System; using System.Data; using System.IO; using System.Text; using System.Threading; using S ...
- [No0000DC]C# FileHelper 本地文件、文件夹操作类封装FileHelper
using System; using System.Diagnostics; using System.IO; using System.Text; using Shared; namespace ...
随机推荐
- 【转载】-- vi/vim使用
vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所 ...
- 整理ORACLE数据库备份常用术语
本文将讲述在备份是常用的数据库相关术语以及业界定义的专业术语,供大家参考和学习. 数据库相关术语: (1)冷备份: 冷备份是将数据库关闭之后,将数据文件.联机日志文件.控制文件拷贝到其他地方进行备份. ...
- MVC中使用RazorPDF创建PDF
这篇文章主要介绍使用Nuget package中的RazorPDF简单的创建PDF的方法. 关于RazorPDF 这个Nuget Package由Al Nyveldt创建.它内部使用ITextShar ...
- 【Win10 UWP】QQ SDK(一):SDK基本使用方法
每当开发一个应用需要社交分享的应用时,总是心里咯噔一下:到底什么时候分享能加上QQ和微信?除了WP8.0版本的微信SDK,官方似乎从未正面发布过适应时代发展的QQ SDK,就连后台,也没有一个可以创建 ...
- (转载)Autodesk面试技术题解答
Autodesk面试技术题解答 By SmartPtr(http://www.cppblog.com/SmartPtr/) 近一年以来,AUTODESK的面试题在网上是闹的沸沸扬扬, ...
- 创建一个简单的HTTP服务(自动查找未使用的端口)
var t = new Thread(new ThreadStart(() => { HttpListener listener = new HttpListener(); var prefix ...
- JPA 使用
本文以JPA+Hibernate 角色与权限示例说明. 角色实体定义: @Entity @Table public class Role { private long id; private Stri ...
- 到底是 const 还是 static readonly
真的一样? const 和 static readonly 常在程序中用来声明常量,调用方法也没有什么不同,他们真的一样吗?我们可以做个试验. 程序集内的常量 现在我们建立一个程序,里面有一个MyCl ...
- 如何在C#中生成与PHP一样的MD5 Hash Code
最近在对一个现有的系统进行C#改造,该系统以前是用PHP做的,后台的管理员登陆用的是MD5加密算法.在PHP中,要对一个字符串进行MD5加密非常简单,一行代码即可: md5("Somethi ...
- 有助于提高你的 Web 开发技能的7个模式库
正如语言风格指南一样,模式库有两个主要用途.首先,是它们提供了一组编码或设计标准,Web 开发团队可以在整个网站中应用,有助于保持一致的编码实践和外观:其次,对于要学习网页设计最佳实践来说是宝贵的财富 ...