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)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类, ...
随机推荐
- WordPress get_allowed_mime_types函数(wp-includes/functions.php)存在跨站脚本漏洞
漏洞版本: WordPress 3.6 漏洞描述: CVE ID:CVE-2013-5738 WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设 ...
- C++ const&的一个特性
最近在搜索类似scope exit的实现时,除了发现已经有人向标准委员会提出意见,还得到一些意外的C++特性,这个特性一直都存在,而且很有趣 http://herbsutter.com/2008/01 ...
- Azure 媒体服务的 RTMP 支持和实时编码器
Cenk Dingiloglu Azure 媒体服务高级项目经理 直播流媒体目前已在公共预览版中提供,其中一项受支持的输入协议便是 RTMP.RTMP 是用于输入和分发包括直播流媒体在内的丰富媒体的一 ...
- [C# 网络编程系列]专题四:自定义Web浏览器
转自:http://www.cnblogs.com/zhili/archive/2012/08/24/WebBrowser.html 前言: 前一个专题介绍了自定义的Web服务器,然而向Web服务器发 ...
- 继续畅通工程 HDOJ--1879
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- VS2013项目受源代码管理向源代码管理注册此项目时出错
在使用TFS的时候有时出现无法加载项目,后来删除项目添加也是不行 编译项目的时候提示如题的错误,用记事本打开出错的几个项目的.csproj文件,把下面几行内容删掉就行了. <SccProject ...
- Cogs 309. [USACO 3.2] 香甜的黄油 dijkstra,堆,最短路,floyd
题目:http://cojs.tk/cogs/problem/problem.php?pid=309 309. [USACO 3.2] 香甜的黄油 ★★ 输入文件:butter.in 输出文件 ...
- JAVA Web项目的编码过滤器
首先写一个EncodeFilter的过滤类: package com.djtu.wy.common; import java.io.IOException;import javax.servlet.F ...
- Shell函数:Shell函数返回值、删除函数、在终端调用函数
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: f ...
- tensorflow 保存变量,
代码: #!usr/bin/env python# coding:utf-8"""这个代码的作用是 通过 tensorflow 来计算 y = 0.3x + 0.1 的线 ...