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. SECHS

    题目描述 对于给定的正整数N,我们把[1, N]中的整数按照字符串的字典序排序得到N 项数列A(N). 例如,N = 11的时候,A(N) = {1, 10, 11, 2, 3, 4, 5, 6, 7 ...

  2. NSString几个函数

    第一.判断是否包含前缀于后缀 NSString *str=@"hello andy yang"; if([str hasPrefix:@"hello"]) { ...

  3. Spring MVC静态资源处理(在applicationContex.xml文件中进行配置)

    优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...

  4. Java集合框架面试题

    www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 这里的两个图很形象,由于放进图片链接,图片显示不了,所以只能给出该链接. Java集合框架 ...

  5. 从分析SQLSERVER ERRORLOG查找错误折射出的工作效率问题

    从分析SQLSERVER ERRORLOG查找错误折射出的工作效率问题 前几天,在备份某一台服务器上的某一个库的时候遇到问题,数据库80G+,在完整备份的时候,SQLSERVER报错 消息 ,级别 , ...

  6. 配置iDempiere源码开发环境

    你需要一个较为快速通畅的互联网连接来下载源代码! 安装软件: OS: Windows Server 2008 R2 SP1 x64 英文版 Database: Oracle 11G R2 x64 英文 ...

  7. ASP.NET MVC学习之控制器篇

    一.前言 许久之后终于可以继续我的ASP.NET MVC连载了,之前我们全面的讲述了路由相关的知识,下面我们将开始控制器和动作的讲解. ASP.NET MVC学习之路由篇幅(1) ASP.NET MV ...

  8. [ACM_动态规划] ZOJ 1425 Crossed Matchings(交叉最大匹配 动态规划)

    Description There are two rows of positive integer numbers. We can draw one line segment between any ...

  9. Atitit. 异常的使用总结最佳实践java .net php Vo8f

    Atitit.java 异常的使用总结最佳实践 Vo8f 1. 为什么使用异常 1 2. 用throw抛出一个异常到catch子句中与通过函数调用传递一个参数两者基本相同. 2 3. S E H的主要 ...

  10. CAS 实现单点登录 .NET MVC

    单点登录 Single Sign On,简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 单点登录原理 ...