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 ...
随机推荐
- Google的Bigtable学习笔记(不保证正确性)
跪求各路大侠指正:1.首先是一个列式存储的简单数据模型的数据库,它比键值对模型/文档模型NoSQL数据库复杂点(也就更强一点).2.它的分布式存储性能依靠于GFS也就对单机房网络有硬性指标.3.它同时 ...
- ORGANIZATION
Leader: Ming Xiang Ph.D students: Bo Yang Yupei Zhang M.Eng. students: Cheng Feng Jinquan Du Youli ...
- 【转发】Cross-thread operation not valid: Control 'progressBar1' accessed from a thread other than the thread it was created on
当您试图从单独的线程更新一个win form时,您将得到如下错误信息: "Cross-thread operation not valid: Control 'progressBar1' ...
- 使用NHibernate(8)-- 延迟加载
1,延迟加载. 延迟加载,即用到的时候再加载数据.这种机制是非常有情怀的,比如一篇中的用户实体有标签.问题等导航属性,如果只是用到用户名去查询整个实体,则把相关的标签和问题也都加载,性能会比较低.而有 ...
- 在Linux CentOS上编译并安装Clang 3.5.0
编译CoreCLR需要Clang 3.5,而CentOS上安装的是Clang 3.4.2(yum repos中最新版也是这个),只能自己手工编译LLVM的源代码进行安装. (注:CentOS的版本是6 ...
- 深入理解java虚拟机【Java内存结构】
Java虚拟机规范规定的java虚拟机内存其实就是java虚拟机运行时数据区,其架构如下: 其中方法区和堆是由所有线程共享的数据区. Java虚拟机栈,本地方法栈和程序计数器是线程隔离的数据区. (1 ...
- 实验三 组合逻辑电路的VHDL设计
一.实验目的 熟悉QuartusⅡ的VHDL文本设计过程,学习简单组合逻辑电路的设计.仿真和测试方法. 二.实验内容 1. 基本命题 完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测 ...
- centos 6.5卸载Mysql
yum remove mysql mysql-server mysql-libs mysql-server
- servlet servlet基本概念和helloservlet实例
java web目录结构: web.xml是重要配置文件,容器正是通过这个文件找到service方法. 用纯文本+tomcat组装简单servlet web 新建HelloServlet.java: ...
- atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证
atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证 1. 需求,表单验证需要弹框式,但目前easyui ms绑定死了tooltip式样 1 2. 表 ...