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 ...
随机推荐
- php数据库常用函数
//打开mysqlmysql_connect( $host, $user, $pwd ) or die('error');$host => localhost //数据库地址$user => ...
- SymmetricDS 3.5.0 发布,数据同步和复制
SymmetricDS 3.5.0 关闭 53 个问题,新增对 SQLite on Android.Sybase ASE 和 Sybase ASA 的支持:增加了文件同步功能,可同步目录.文件过滤和脚 ...
- ASP.NET MVC学习之过滤器篇(2)
下面我们继续之前的ASP.NET MVC学习之过滤器篇(1)进行学习. 3.动作过滤器 顾名思义,这个过滤器就是在动作方法调用前与调用后响应的.我们可以在调用前更改实际调用的动作,也可以在动作调用完成 ...
- 用groovy采集网页数据
首先,用 http://groovyconsole.appspot.com/ 测试下面的代码,发现引用总是失败. 下载了GGTS: https://spring.io/tools/ggts 测试成功: ...
- servlet servlet基本概念和helloservlet实例
java web目录结构: web.xml是重要配置文件,容器正是通过这个文件找到service方法. 用纯文本+tomcat组装简单servlet web 新建HelloServlet.java: ...
- Java程序员的日常 —— static的用法讲解实践
之前文章说过Java中static的作用,有朋友想看个例子.于是便抽空写了个小栗子 代码 package xing.test.thinking.chap5; class A{ public A() { ...
- AT&T Assembly for Linux and Mac (sys_write)
Write() in C : (sys_write.c) #include <stdio.h> int main(void) { printf("Hello Landpack\n ...
- atitit.条形码的原理与生成总结java Barcode4j barcode o5
atitit.条形码的原理与生成总结java Barcode4j barcode o5 条形码类库使用报告Barcode4j, ZXing 1 使用成果图片 1 条形码标准code 128和code ...
- iOS---内存优化
在用非ARC模式编写iOS程序的时候,造成程序内存泄露在所难免,后期我们一般会进行内存优化.自己比较常用的内存优化方法有两种 1.Analyze,静态分析内存泄露的方法.很简单,在Xcode菜单栏中点 ...
- web前端基础——jQuery编程基础
1 jQuery简介 jQuery是一个兼容多浏览器的JavaScript库,核心理念是write less,do more(写得更少,做得更多).它对JavaScript进行了封装,使开发更便捷,并 ...