源代码地址: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();
} }

更多参考:

SqlSugar-事务操作

SqlSugar常用增删改操作

SqlSugar常用查询实例-拉姆达表达式

SqlSugar框架T4模板的使用

.Net开源SqlServer ORM框架SqlSugar整理

SqlSugar简单工模式数据访问简单Demo的更多相关文章

  1. Design Patterns (简单工厂模式)

    文章很长很精彩,如是初学请耐心观看.(大神请绕道!) 简单工厂模式: 1.创建型模式 2.简单工厂模式概述 3.简单工厂模式的结构与实现 4.简单工厂模式的应用实例 5.创建对象与使用对象 6.简单工 ...

  2. 数据访问模式之Repository模式

    数据访问模式之Repository模式   数据访问层无非就是对数据进行增删改查,其中增.删.改等我们可以抽象出来写一个公共的接口或抽象类来定义这些方法,并采用一个基类实现这些方法,这样该基类派生的子 ...

  3. PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)

    最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...

  4. 简单工厂模式—>工厂模式

    一.功能 根据前一篇博客:策略模式+单例模式+简单工厂模式:推送服务,想试用一下工厂模式:将之前的简单工厂模式格式化为工厂模式. 二.实现 修改前:简单工厂 public static class P ...

  5. 再起航,我的学习笔记之JavaScript设计模式30(简单模板模式)

    简单模板模式 概念介绍 简单模板模式(Simple template): 通过格式化字符串拼凑出视图避免创建视图时大量节点操作,优化内存开销. 创建模板 在实际的业务中如果我们需要进行前后台交互,或多 ...

  6. 设计模式之策略模式&amp;简单工厂模式

    学习设计模式已经有非常长一段时间了,事实上先前已经敲过一遍了.可是老认为没有学到什么,认识也不够深刻.如今趁着重构机房,再又一次来过,也不晚. 事实上在敲了机房之后,看看模式,事实上,曾经非常难理解. ...

  7. Asp.Net 设计模式 之 “简单工厂”模式

    主要思想: public static Operation CreateFactory(string ope)        {            //实例化空父类,让父类指向子类         ...

  8. iOS经常使用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)

    1. 简单工厂模式 怎样理解简单工厂,工厂方法. 抽象工厂三种设计模式? 简单工厂的生活场景.卖早点的小摊贩.他给你提供包子,馒头,地沟油烙的煎饼等,小贩是一个工厂.它生产包子,馒头,地沟油烙的煎饼. ...

  9. Net设计模式实例之简单工厂模式(Simple Factory Pattern)

    一.简单工厂模式简介(Bref Introduction) 简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类, ...

随机推荐

  1. WordPress get_allowed_mime_types函数(wp-includes/functions.php)存在跨站脚本漏洞

    漏洞版本: WordPress 3.6 漏洞描述: CVE ID:CVE-2013-5738 WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设 ...

  2. C++ const&的一个特性

    最近在搜索类似scope exit的实现时,除了发现已经有人向标准委员会提出意见,还得到一些意外的C++特性,这个特性一直都存在,而且很有趣 http://herbsutter.com/2008/01 ...

  3. Azure 媒体服务的 RTMP 支持和实时编码器

    Cenk Dingiloglu Azure 媒体服务高级项目经理 直播流媒体目前已在公共预览版中提供,其中一项受支持的输入协议便是 RTMP.RTMP 是用于输入和分发包括直播流媒体在内的丰富媒体的一 ...

  4. [C# 网络编程系列]专题四:自定义Web浏览器

    转自:http://www.cnblogs.com/zhili/archive/2012/08/24/WebBrowser.html 前言: 前一个专题介绍了自定义的Web服务器,然而向Web服务器发 ...

  5. 继续畅通工程 HDOJ--1879

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  6. VS2013项目受源代码管理向源代码管理注册此项目时出错

    在使用TFS的时候有时出现无法加载项目,后来删除项目添加也是不行 编译项目的时候提示如题的错误,用记事本打开出错的几个项目的.csproj文件,把下面几行内容删掉就行了. <SccProject ...

  7. Cogs 309. [USACO 3.2] 香甜的黄油 dijkstra,堆,最短路,floyd

    题目:http://cojs.tk/cogs/problem/problem.php?pid=309 309. [USACO 3.2] 香甜的黄油 ★★   输入文件:butter.in   输出文件 ...

  8. JAVA Web项目的编码过滤器

    首先写一个EncodeFilter的过滤类: package com.djtu.wy.common; import java.io.IOException;import javax.servlet.F ...

  9. Shell函数:Shell函数返回值、删除函数、在终端调用函数

    函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: f ...

  10. tensorflow 保存变量,

    代码: #!usr/bin/env python# coding:utf-8"""这个代码的作用是 通过 tensorflow 来计算 y = 0.3x + 0.1 的线 ...