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 操作类封装的更多相关文章

  1. XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)

    XML序列化   #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...

  2. c# 封装Dapper操作类

    using Dapper; using DapperExtensions; using System.Collections.Generic; using System.Configuration; ...

  3. 基于 Aspose.Cells与XML导入excel 数据----操作类封装

    前言 导入excel数据, 在每个项目中基本上都会遇到,第三方插件或者基于微软office,用的最多的就是npoi,aspose.cells和c#基于office这三种方式,其中各有各的优缺点,在这也 ...

  4. php-redis 操作类 封装

    <?php /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时,才会返回false. * 这点可用于防止缓存穿透 * */ cla ...

  5. 【PHP+Redis】 php-redis 操作类 封装

    <?php /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时,才会返回false. * 这点可用于防止缓存穿透 * */ cla ...

  6. websql操作类封装

    在之前,我写了一个websql的封装类库,代码如下: (function(win) { function smpWebSql(options){ options = options || {}; th ...

  7. c# Lambda操作类封装

    using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...

  8. [No0000DE]C# XmlHelper XML类型操作 类封装

    using System; using System.Data; using System.IO; using System.Text; using System.Threading; using S ...

  9. [No0000DC]C# FileHelper 本地文件、文件夹操作类封装FileHelper

    using System; using System.Diagnostics; using System.IO; using System.Text; using Shared; namespace ...

随机推荐

  1. 『TCP/IP详解——卷一:协议』读书笔记——09

    2013-08-22 12:42:26 3.4 子网寻址 子网编码:不是把IP地址看成由单纯的网络号和主机号组成,我们把主机号再分成子网号和主机号.这样做是因为,A.B类地址为主机号分配了太多的空间, ...

  2. C# 正则表达式测试工具与分享窗体自适应类

    放假刚回来,自己打算写一个正则表达式的测试工具,因为上次在网上用的一个在线正则表示测试工具就 没有很好的服务自己的,所以才有了现在的想法,想写一个C#开发者用的正则表达式测试工具!期间由于最大化时控件 ...

  3. Python中文字符串截取

    #-*- coding:utf8 -*- s = u'中文截取' s.decode('utf8')[0:3].encode('utf8') # 结果u'中文截取 延伸阅读: UTF-8中的汉字占用多少 ...

  4. 真实世界:使用WCF扩展在方法调用前初始化环境

    OperationInvoker 介绍 OperationInvoker 是 WCF 运行时模型中在调用最终用户代码前的最后一个扩展点,OperationInvoker 负责最终调用 Service ...

  5. fancybox,Ckeditor,jscrollpane 笔记串烧

    有用到一些插件,整理了一些笔记,分享一下. 一.Fancybox 很酷很强大的弹窗插件 官网地址:Fancybox,基于jquery,开源协议是GPL和MIT. 主要的特点是:能展示图片,html元素 ...

  6. Ubuntu上安装ns2-2.34

    Ubuntu上安装ns2-2.34 步骤1 下载ns-allinone-2.34 $ tar zxf ns-allinone-2.34.tar.gz 步骤2 sudo apt-get install ...

  7. Linux:目录&文件基本操作

    - 表示上一次所在目录,- 通常表示当前用户的"home"目录.使用 pwd 命令可以获取当前所在路径(绝对路径). 新建文件:touch test创建目录:mkdir -p fa ...

  8. 开启Github之旅

    在那个远古时代,我以为可以用GoogleCode干点事,结果啥也没干好.如今,Github已经成为了业界标杆,就连Google.微软.Facebook的开源项目都往Github搬.Github作为全球 ...

  9. NSIS总结1——以管理权限运行

    在Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" 到第一个Section之间插入一行代码 RequestExecutionLevel admin ...

  10. Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar

    web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...