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)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类, ...
随机推荐
- 《Spark大数据处理:技术、应用与性能优化 》
基本信息 作者: 高彦杰 丛书名:大数据技术丛书 出版社:机械工业出版社 ISBN:9787111483861 上架时间:2014-11-5 出版日期:2014 年11月 开本:16开 页码:255 ...
- bzoj1878
像我这种蒟蒻这道题从在线算法思考基本毫无思路 但是发现题目中只涉及到询问而不涉及到修改,这类题目一般都是离线算法大概 考虑到这题为什么不能直接区间求值,因为区间中同色点会被重复计算(废话) 下面我们就 ...
- 将eclipse新建项目的默认编码GBK改为UTF-8
在eclipse下: 新建项目默认编码设置:Window->Preferences->General->Workspace->Text file encoding 将其改为UF ...
- 常用开源GIS项目
常用开源GIS项目 常用开源桌面GIS软件 QGIS 始于2002年5月,算得上是开源GIS平台中的后起之秀.界面友好,分析功能可与GRASS GIS相媲美.主页:http://www.qgi ...
- 如何在 Linux 终端下创建新的文件系统/分区
在 Linux 中创建分区或新的文件系统通常意味着一件事:安装 Gnome Parted 分区编辑器(GParted).对于大多数 Linux 用户而言,这是唯一的办法.不过,你是否考虑过在终端创建这 ...
- 1116 HTML CSS
1. JPEG和GIF在使用时的注意事项: JPEG可以连续调次(复制品中有中间层次,如照片)图像中获得最好效果:JPEG可以用1600万色显示图像,是有损格式,不支持透明. GIF适用于几种纯色组成 ...
- 397. Integer Replacement
先正统做法. public class Solution { public int integerReplacement(int n) { if(n == 1) return 0; int res = ...
- SourceTree的基本使用
1. SourceTree是什么 拥有可视化界面的项目版本控制软件,适用于git项目管理 window.mac可用 2. 获取项目代码 1. 点击克隆/新建 2. 在弹出框中输入项目地址,http或者 ...
- Android学习(一)
#常见布局 ###线性布局 有一个布局方向,水平或者竖直 在竖直布局下,左对齐.右对齐,水平居中生效 在水平布局下,顶部对齐.底部对齐.竖直居中生效 权重:按比例分配屏幕的剩余宽度或者高度 ###相对 ...
- swift小结01--基础篇
2014年推出的swift目前已来到了3.0,日趋稳定,这个是之前学习整理的关于swift的资料,分享给大家,希望有用,写的不足的地方还请见谅. 语言背景: Swift 语言由苹果公司 ...