1、最简单的使用

public class DatabaseService
{
private static readonly Lazy<SqlSugarClient> _db = new Lazy<SqlSugarClient>(() =>
{
var db = new SqlSugarClient(new ConnectionConfig
{
ConnectionString = ConnectionDbConfig.ConnectionString,
DbType = DbType.SqlServer,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute
});
return db;
});
}

2、使用自带的SimpleClient

 public class DatabaseService<T> : SimpleClient<T> where T : class, new()
{
private static readonly Lazy<SqlSugarClient> _db = new Lazy<SqlSugarClient>(() =>
{
var db = new SqlSugarClient(new ConnectionConfig
{
ConnectionString = ConnectionDbConfig.ConnectionString,
DbType = DbType.SqlServer,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute
});
return db;
});
}

3、在第一种基础上自定义部分方法

 public class DataBaseProvider<TEntity> where TEntity : class, new()
{
private SqlSugarClient _db; public DataBaseProvider()
{
_db = new SqlSugarClient(new ConnectionConfig()
{ ConnectionString = ConnectionDbConfig.ConnectionString,
DbType = DbType.SqlServer,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute });
} public ISugarQueryable<TEntity> Queryable
{
get { return _db.Queryable<TEntity>(); }
} public ISugarQueryable<TEntity> QueryableList()
{
return _db.Queryable<TEntity>();
} public void Insert(TEntity entity)
{
_db.Insertable(entity).ExecuteCommand();
} public void Update(TEntity entity)
{
_db.Updateable(entity).ExecuteCommand();
} public void Delete(TEntity entity)
{
_db.Deleteable(entity).ExecuteCommand();
} public void SaveData(TEntity entity)
{
//_db.Saveable(entity).ExecuteReturnEntity(); 过时
_db.Storageable(entity).ExecuteCommand();
}
public void DeleteById(object id)
{
_db.Deleteable<TEntity>(id).ExecuteCommand();
}
}

4、复杂业务需要自定义泛型接口,(包括但不仅限于输入输出DTO),此时子类方法需要用到AutoMapper或者Maspter

 public interface IBaseRepository<TEntity> where TEntity : class, new()
{
Task<bool> CreateAsync(TEntity entity);
Task<bool> DeleteAsync(int id);
Task<bool> EditAsync(TEntity entity);
Task<TEntity> FindAsync(int id);
Task<TEntity> FindAsync(Expression<Func<TEntity, bool>> func);
/// <summary>
/// 查询全部的数据
/// </summary>
/// <returns></returns>
Task<List<TEntity>> QueryAsync();
/// <summary>
/// 自定义条件查询
/// </summary>
/// <param name="func"></param>
/// <returns></returns>
Task<List<TEntity>> QueryAsync(Expression<Func<TEntity, bool>> func);
/// <summary>
/// 分页查询
/// </summary>
/// <param name="page"></param>
/// <param name="size"></param>
/// <param name="total"></param>
/// <returns></returns>
Task<List<TEntity>> QueryAsync(int page, int size, RefAsync<int> total);
/// <summary>
/// 自定义条件分页查询
/// </summary>
/// <param name="func"></param>
/// <param name="page"></param>
/// <param name="size"></param>
/// <param name="total"></param>
/// <returns></returns>
Task<List<TEntity>> QueryAsync(Expression<Func<TEntity, bool>> func, int page, int size, RefAsync<int> total);
}
public class BaseRepository<TEntity> : SimpleClient<TEntity>, IBaseRepository<TEntity> where TEntity : class, new()
{
public BaseRepository(ISqlSugarClient context = null) : base(context)
{
base.Context = xxx; }
public async Task<bool> CreateAsync(TEntity entity)
{
return await base.InsertAsync(entity);
}
public async Task<bool> DeleteAsync(int id)
{
return await base.DeleteByIdAsync(id);
} public async Task<bool> EditAsync(TEntity entity)
{
return await base.UpdateAsync(entity);
}
//导航查询
public virtual async Task<TEntity> FindAsync(int id)
{
return await base.GetByIdAsync(id);
} public async Task<TEntity> FindAsync(Expression<Func<TEntity, bool>> func)
{
return await base.GetSingleAsync(func);
} public virtual async Task<List<TEntity>> QueryAsync()
{
return await base.GetListAsync();
} public virtual async Task<List<TEntity>> QueryAsync(Expression<Func<TEntity, bool>> func)
{
return await base.GetListAsync(func);
} public virtual async Task<List<TEntity>> QueryAsync(int page, int size, RefAsync<int> total)
{
return await base.Context.Queryable<TEntity>()
.ToPageListAsync(page, size, total);
} public virtual async Task<List<TEntity>> QueryAsync(Expression<Func<TEntity, bool>> func, int page, int size, RefAsync<int> total)
{
return await base.Context.Queryable<TEntity>()
.Where(func)
.ToPageListAsync(page, size, total);
}
}

SqlSugar的几种连接方式的更多相关文章

  1. linux学习之centos(二):虚拟网络三种连接方式和SecureCRT的使用

    ---操作环境--- 虚拟机版本:VMware Workstation_10.0.3 Linux系统版本:CentOS_6.5(64位) 物理机系统版本:win10  一.虚拟网络三种连接方式 当在V ...

  2. Java使用SFTP和FTP两种连接方式实现对服务器的上传下载 【我改】

    []如何区分是需要使用SFTP还是FTP? []我觉得: 1.看是否已知私钥. SFTP 和 FTP 最主要的区别就是 SFTP 有私钥,也就是在创建连接对象时,SFTP 除了用户名和密码外还需要知道 ...

  3. oracle Hash Join及三种连接方式

    在Oracle中,确定连接操作类型是执行计划生成的重要方面.各种连接操作类型代表着不同的连接操作算法,不同的连接操作类型也适应于不同的数据量和数据分布情况. 无论是Nest Loop Join(嵌套循 ...

  4. [转]Apache HTTP Server 与 Tomcat 的三种连接方式介绍

    首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接.事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装好 tomcat 后通过 8080 端 ...

  5. Linux基石【第二篇】虚拟网络三种连接方式(转载)

    在虚拟机上安装完Centos系统后,开始配置静态IP,以方便在本宿主机上可以访问虚拟机,在曲折的配置中,了解到虚拟机还有三种连接方式:Bridged,NAT和Host-only,于是,我又一轮新的各种 ...

  6. Java连接Oracle数据库的三种连接方式

    背景: 这两天在学习Oracle数据库,这里就总结下自己上课所学的知识,同时记录下来,方便整理当天所学下的知识,也同时方便日后自己查询. SQL语句的话,这里我就不多讲了,感觉和其他的数据库(MySQ ...

  7. iSCSI存储的3种连接方式

    我们分析了iSCSI存储的系统结构,下面来看iSCSI是如何与服务器.工作站等主机设备来连接的,也就是我们如何建立一个iSCSI网络存储系统. iSCSI设备的主机接口一般默认都是IP接口,可以直接与 ...

  8. Hash Join是Oracle CBO时代经常出现的一种连接方式

    Hash Join是Oracle CBO时代经常出现的一种连接方式,对海量数据处理时经常出现在执行计划里.本篇的上篇(http://space.itpub.net/17203031/viewspace ...

  9. 项目案例模板之jdbc两种连接方式

    项目案例模板之jdbc两种连接方式 第一种连接方式 JDBCUtils.java package jdbc; ​ import org.junit.jupiter.api.Test; ​ import ...

  10. mysql三种连接方式

    sql四种连接方式demo: 表a 表b a.id与b.parent_id有关系 1.内连接:SELECT a.*,b.* from a INNER JOIN b ON a.id=b.parent_i ...

随机推荐

  1. Hbase-执行hbase shell命令时提示:ERROR: KeeperErrorCode = NoNode for /hbase/master

    1.问题描述 执行hbase  shell命令时提示: ERROR: KeeperErrorCode = NoNode for /hbase/master 2.问题原因 这是与因为服务器重启后Hado ...

  2. VMware全版本下载工具

    有很多小伙伴想下载适合自己的虚拟机版本,但是官网全是英文看不懂 百度找的还怕带病毒 这里栀煜单独制作了个工具,内置vm9 10 11 12 14 15 16 17版本的虚拟机下载地址,都是官方版 不是 ...

  3. CF739A Alyona and mex 题解

    题目传送门 前置知识 贪心 | 构造 解法 从贪心的角度分析,最小的 \(\operatorname{mex}\) 仅会与长度最小的区间有关:另外为使得 \(\operatorname{mex}\) ...

  4. NC22593 签到题

    题目链接 题目 题目描述 恭喜你找到了本场比赛的签到题! 为了让大家都有抽奖的机会,只需要复制粘贴以下代码(并且稍微填下空)即可 AC: (我超良心的) #include <algorithm& ...

  5. C 语言常用头文件解释

    C系统提供了丰富的系统文件,称为库文件,整理一下以后好实用: <stdio.h> 定义了三个变量类型.一些宏和各种函数来执行输入和输出 https://www.runoob.com/cpr ...

  6. Spring Boot图书管理系统项目实战-1.系统功能和架构介绍

    导航: next:2.项目搭建 1.项目源码 需要源码的朋友,请捐赠任意金额后留下邮箱发送:) 2.项目背景 自己闲着没事写的,供初学spring boot和在校大学生毕业设计学习交流.大神请忽略:) ...

  7. 信捷电气 - C++工程师面试题(社招:3-5年工作经验)

    1. char i = 1; printf("%d",i);    // char字节用printf以整数型打印出来 2. int (*a[10])int a[10]是函数指针数组 ...

  8. RK3568开发笔记(九):开发板buildroot固件调通RS485口,运行项目中RS485协议调试工具Demo

    前言   上一篇已经将Qt移植过去了,此时我们移植整体应用不是什么问题了,那么现在应用对外得接口使用了RS485接口,板载了一个RS485,于是需要调通,兼容这个开发板得RS485.   补充   看 ...

  9. Anaconda下载安装步骤

    下载地址 下载比较慢的,用迅雷下,点击复制地址,然后在迅雷里面直接创建连接 Anaconda基于python3.8 Anaconda基于python3.6的 安装步骤 没啥说的,一路安装,中间有个勾选 ...

  10. webservice之jersey简单实用

    前言 项目中更需要使用到webservice,具体的是使用jersey.那么首先需要了解jersey和webservice的关系,捋顺webservice框架的各种实现,通过查阅相关博客,我个人总结w ...