SqlSugar简单工模式数据访问简单Demo
源代码地址:http://git.oschina.net/tiama3798/BootstrapBack_Demo/tree/SqlSugar/
1.Model层

2.抽象层实例:
基础接口
/// <summary>
/// 基础接口
/// </summary>
public interface IBaseAbstract<T> where T : class
{
#region 基础访问
/// <summary>
/// 获取表达式树
/// </summary>
/// <returns></returns>
Queryable<T> GetQueryable();
/// <summary>
/// 获取对象
/// </summary>
/// <param name="ID">主键ID</param>
/// <returns></returns>
T GetModel(object ID);
/// <summary>
/// 添加对象
/// </summary>
/// <param name="model">对象</param>
/// <returns></returns>
object Add(T model);
/// <summary>
/// 修改对象
/// </summary>
/// <param name="model">对象</param>
/// <returns></returns>
bool Update(T model);
/// <summary>
/// 删除对象
/// </summary>
/// <param name="model">对象</param>
/// <returns></returns>
bool Delete(T model);
/// <summary>
/// 删除对象---主键删除的公共方法,只支持int类型
/// </summary>
/// <param name="ID">主键ID</param>
/// <returns></returns>
bool Delete(int ID);
#endregion
}
/// <summary>
/// 学生接口定义
/// </summary>
public interface IStudent : IBaseAbstract<student>
{
#region 获取分页
/// <summary>
/// 获取分页数据
/// </summary>
/// <param name="info">分页信息</param>
/// <returns></returns>
List<student> GetPage(PageInfo info,string search); #endregion #region 获取数量
/// <summary>
/// 获取总数
/// </summary>
/// <returns></returns>
int GetCount();
#endregion
}
3.实现成
基础类:
internal class BaseOperate<T> where T : class, new()
{
protected SqlSugarClient db = null;
public BaseOperate()
{
db = SugarContext.GetInstance();
} #region 基础访问
/// <summary>
/// 获取表达式树
/// </summary>
/// <returns></returns>
public Queryable<T> GetQueryable()
{
return db.Queryable<T>();
}
/// <summary>
/// 获取对象
/// </summary>
/// <param name="ID">主键ID</param>
/// <returns></returns>
public T GetModel(object ID)
{
return GetQueryable().InSingle<T>(ID);
}
/// <summary>
/// 添加对象
/// </summary>
/// <param name="model">对象</param>
/// <returns></returns>
public object Add(T model)
{
try
{
return db.Insert<T>(model);
}
catch (Exception ex)
{
throw new Exception("添加对象失败,当前类型:"+(typeof(T).Name)+ex.Message,ex);
}
}
/// <summary>
/// 修改对象
/// </summary>
/// <param name="model">对象</param>
/// <returns></returns>
public bool Update(T model)
{
try
{
return db.Update<T>(model);
}
catch (Exception ex)
{
throw new Exception("修改对象失败,当前类型:" + (typeof(T).Name), ex);
}
}
/// <summary>
/// 删除对象
/// </summary>
/// <param name="model">对象</param>
/// <returns></returns>
public bool Delete(T model)
{
try
{
return db.Delete<T>(model);
}
catch (Exception ex)
{
throw new Exception("删除对象失败,当前类型:" + (typeof(T).Name), ex);
}
}
/// <summary>
/// 删除对象,默认只支持int类型
/// </summary>
/// <param name="ID">主键ID</param>
/// <returns></returns>
public bool Delete(int ID)
{
try
{
return db.Delete<T, int>(ID);
}
catch (Exception ex)
{
throw new Exception("删除对象失败,当前类型:" + (typeof(T).Name), ex);
}
}
#endregion
}
实现类:
/// <summary>
/// 学生数据访问操作
/// </summary>
internal class StudentOperate : BaseOperate<student>, IStudent
{
#region 获取分页
/// <summary>
/// 获取分页数据
/// </summary>
/// <param name="info">分页信息</param>
/// <returns></returns>
public List<student> GetPage(PageInfo info, string search)
{
//排序
var query = GetQueryable();
if (string.IsNullOrEmpty(search) == false)
{
query = query.Where(q => q.sno.Contains(search) || q.sname.Contains(search));
}
query = query.OrderBy(q => q.sbirthday);
info.RecordCount = query.Count();
//分页
return query.ToPageList(info.PageIndex, info.PageSize);
}
#endregion #region 获取数量
/// <summary>
/// 获取总数
/// </summary>
/// <returns></returns>
public int GetCount()
{
return GetQueryable().Count();
}
#endregion
}
4.工厂类:
/// <summary>
/// 获取数据操作接口
/// </summary>
public class SugarFactory
{
public static IStudent GetStudent()
{
return new StudentOperate();
} }
更多参考:
.Net开源SqlServer ORM框架SqlSugar整理
SqlSugar简单工模式数据访问简单Demo的更多相关文章
- Design Patterns (简单工厂模式)
文章很长很精彩,如是初学请耐心观看.(大神请绕道!) 简单工厂模式: 1.创建型模式 2.简单工厂模式概述 3.简单工厂模式的结构与实现 4.简单工厂模式的应用实例 5.创建对象与使用对象 6.简单工 ...
- 数据访问模式之Repository模式
数据访问模式之Repository模式 数据访问层无非就是对数据进行增删改查,其中增.删.改等我们可以抽象出来写一个公共的接口或抽象类来定义这些方法,并采用一个基类实现这些方法,这样该基类派生的子 ...
- PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)
最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...
- 简单工厂模式—>工厂模式
一.功能 根据前一篇博客:策略模式+单例模式+简单工厂模式:推送服务,想试用一下工厂模式:将之前的简单工厂模式格式化为工厂模式. 二.实现 修改前:简单工厂 public static class P ...
- 再起航,我的学习笔记之JavaScript设计模式30(简单模板模式)
简单模板模式 概念介绍 简单模板模式(Simple template): 通过格式化字符串拼凑出视图避免创建视图时大量节点操作,优化内存开销. 创建模板 在实际的业务中如果我们需要进行前后台交互,或多 ...
- 设计模式之策略模式&简单工厂模式
学习设计模式已经有非常长一段时间了,事实上先前已经敲过一遍了.可是老认为没有学到什么,认识也不够深刻.如今趁着重构机房,再又一次来过,也不晚. 事实上在敲了机房之后,看看模式,事实上,曾经非常难理解. ...
- Asp.Net 设计模式 之 “简单工厂”模式
主要思想: public static Operation CreateFactory(string ope) { //实例化空父类,让父类指向子类 ...
- iOS经常使用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)
1. 简单工厂模式 怎样理解简单工厂,工厂方法. 抽象工厂三种设计模式? 简单工厂的生活场景.卖早点的小摊贩.他给你提供包子,馒头,地沟油烙的煎饼等,小贩是一个工厂.它生产包子,馒头,地沟油烙的煎饼. ...
- Net设计模式实例之简单工厂模式(Simple Factory Pattern)
一.简单工厂模式简介(Bref Introduction) 简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类, ...
随机推荐
- 【HDOJ】2844 Coins
完全背包. #include <stdio.h> #include <string.h> ], c[]; int n, m; ]; int mymax(int a, int b ...
- USACO3.32Shopping Offers(DP)
五维DP,听着挺多的,貌似就是挺裸的dp, 最近貌似做简单的DP挺顺手..1A dp[i][j][e][o][g] = min(dp[i][j][e][o][g],dp[i-i1][j-i2][e-i ...
- 转自 x_x的百度空间
空华人生 by 淡漠的心情 昨天,又昨天. 今天,又今天. 明天,又明天. 日历渐渐稀薄,忽然发现,那是时间的痕迹. 似乎,总是在麻木的等待. 何时,才能历尽. 再算算,我又还有多少天 ...
- 避免由于Windows Update自动安装安全补丁导致VM意外重启
最近我们遇到一些客户报告他们的Windows VM被意外重启导致了其服务中断,我们查看了Event Log发现这个重启的操作时由于Windows update自动安装了安全补丁导致的重启操作.默 ...
- HDOJ -- 1015
1.DFS #include<cmath> #include<cstdio> #include<cstdlib> #include<string> #i ...
- 还是畅通工程 --HDOJ 1233
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- 如何从PDF文件中提取矢量图
很多时候我们需要PDF文档中的插图,直接用pdf中的复制或者截屏软件只能提取位图格式的图片,放大缩小难免失真. 本文教大家一种一种从pdf中提取矢量图的方法. 工具软件: 1 adobe acroba ...
- JavaScript高级程序设计54.pdf
过滤输入 对于一些浏览器,可以使用正则表达式里的text()测试用户按下的按键,Firefox和safari(3.1版本之前)会对向上向下.退格键和删除键触发keypress事件,在Firefox中, ...
- Bzoj 1901: Zju2112 Dynamic Rankings 主席树,可持久,树状数组,离散化
1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 6321 Solved: 2628[Su ...
- cpp