zoukankan      html  css  js  c++  java
  • SqlSugar的基本使用

    SqlSugar 是一ORM框架,官方文档地址:http://www.codeisbug.com 有兴趣的朋友自行查看。

    这里主要说建立 一个简单的实例。

    1.建立实体类,这是我就不再把实体写出来了。

    2.建立通用数据库连接及数据操作类,这里是直接从官方的例子的基础上衍生的一个通用类,用的是泛型的方式 

    public  class DbContext<T> where T: class,new()
        {
            public DbContext()
            {
                Db = new SqlSugarClient(new ConnectionConfig()
                {
                    ConnectionString = ConfigurationSettings.AppSettings["HR Connection String"].ToString(),
                    DbType = DbType.SqlServer,
                    InitKeyType = InitKeyType.Attribute,//从特性读取主键和自增列信息
                    IsAutoCloseConnection = true,//开启自动释放模式和EF原理一样我就不多解释了
    
                });
                //调式代码 用来打印SQL 
                Db.Aop.OnLogExecuting = (sql, pars) =>
                {
                    Console.WriteLine(sql + "
    " +
                                      Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
                    Console.WriteLine();
                    AppLog.Info(sql);
    
                };
    
            }
            //注意:不能写成静态的
            public SqlSugarClient Db;//用来处理事务多表查询和复杂的操作
           
            public SimpleClient<T> CurrentDb { get { return new SimpleClient<T>(Db); } }//用来处理T表的常用操作
    
    
    
            /// <summary>
            /// 获取所有
            /// </summary>
            /// <returns></returns>
            public virtual List<T> GetList()
            {
                return CurrentDb.GetList();
            }
    
            /// <summary>
            /// 根据表达式查询
            /// </summary>
            /// <returns></returns>
            public virtual List<T> GetList(Expression<Func<T, bool>> whereExpression)
            {
                return CurrentDb.GetList(whereExpression);
            }
    
    
            /// <summary>
            /// 根据表达式查询分页
            /// </summary>
            /// <returns></returns>
            public virtual List<T> GetPageList(Expression<Func<T, bool>> whereExpression, PageModel pageModel)
            {
                return CurrentDb.GetPageList(whereExpression, pageModel);
            }
    
            /// <summary>
            /// 根据表达式查询分页并排序
            /// </summary>
            /// <param name="whereExpression">it</param>
            /// <param name="pageModel"></param>
            /// <param name="orderByExpression">it=>it.id或者it=>new{it.id,it.name}</param>
            /// <param name="orderByType">OrderByType.Desc</param>
            /// <returns></returns>
            public virtual List<T> GetPageList(Expression<Func<T, bool>> whereExpression, PageModel pageModel, Expression<Func<T, object>> orderByExpression = null, OrderByType orderByType = OrderByType.Asc)
            {
                return CurrentDb.GetPageList(whereExpression, pageModel, orderByExpression, orderByType);
            }
    
    
            /// <summary>
            /// 根据主键查询
            /// </summary>
            /// <returns></returns>
            public virtual T GetById(dynamic id)
            {
                return CurrentDb.GetById(id);
            }
    
            /// <summary>
            /// 根据主键删除
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public virtual bool Delete(dynamic id)
            {
                return CurrentDb.Delete(id);
            }
    
    
            /// <summary>
            /// 根据实体删除
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public virtual bool Delete(T data)
            {
                return CurrentDb.Delete(data);
            }
    
            /// <summary>
            /// 根据主键删除
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public virtual bool Delete(dynamic[] ids)
            {
                return CurrentDb.AsDeleteable().In(ids).ExecuteCommand() > 0;
            }
    
            /// <summary>
            /// 根据表达式删除
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public virtual bool Delete(Expression<Func<T, bool>> whereExpression)
            {
                return CurrentDb.Delete(whereExpression);
            }
    
    
            /// <summary>
            /// 根据实体更新,实体需要有主键
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public virtual bool Update(T obj)
            {
                return CurrentDb.Update(obj);
            }
    
            /// <summary>
            ///批量更新
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public virtual bool Update(List<T> objs)
            {
                return CurrentDb.UpdateRange(objs);
            }
    
            /// <summary>
            /// 插入
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public virtual bool Insert(T obj)
            {
                return CurrentDb.Insert(obj);
            }
    
    
            /// <summary>
            /// 批量
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public virtual bool Insert(List<T> objs)
            {
                return CurrentDb.InsertRange(objs);
            }
    
            /// <summary>
            /// 查询sql 返回list
            /// </summary>
            /// <param name="sqlstr"></param>
            /// <returns></returns>
            public List<T> SqlQueryList(string sqlstr)
            {
              return  this.Db.SqlQueryable<T>(sqlstr).ToList();
            }
    
            /// <summary>
            /// 查询sql 返回table
            /// </summary>
            /// <param name="sqlstr"></param>
            /// <returns></returns>
            public DataTable SqlQueryTab(string sqlstr)
            {
                return this.Db.Ado.GetDataTable(sqlstr);
            }
    
    
    
        }

    3.继承DbContext并根据业务的不同,对其进行扩展

     public  class 实体类名Manage:DbContext<实体类名>
        {
    ///扩展的方法
    public void insertExt(实体类名 plan) { //to do... } }

    4.因为每个实体类都要继承DbContext,稍微大一点的系统,就会显示很杂乱,这里我们建立 adoManage 对其进行统一的管理,当然,如果小伙伴要直接 new 一个实体也是可以的

    以下 CardPlan  ,Code 皆为实体类名,小伙伴可自行改名,也考虑利用反射来做

    public class adoManage
        {
            public  static  CardPlanManage getCardPlanManage()
            {
                return new CardPlanManage(); 
            }
    
            public static CodeManage getCodeManage()
            {
                return  new CodeManage();
            }
         
    
        }

    5.调用 ,以上的代码都完成 了的话,调用就很容易了

    调用CardPlan的插入方法如下

    adoManage.getCardPlanManage().Insert(planInfo);

    如调用SqlSugar db里面的方法,即官方网站所用的一些示例的方法

    adoManage.getCardPlanManage().Db.相关方法

    ** SqlSugar有自带的代码生成器,及实体类生成器,可自行到官网下载

  • 相关阅读:
    iptables
    vsftpd安装
    完整java开发中JDBC连接数据库代码和步骤
    java中使用队列:java.util.Queue
    程序中遇到重点问题
    在JSP页面中用select下拉列表来显示List列表的方式
    java.lang.String cannot be cast to [Ljava.lang.Object;
    java虚拟机的内存设置
    网络协议都有哪些
    使用java技术将Excel表格内容导入mysql数据库
  • 原文地址:https://www.cnblogs.com/chcong/p/13142163.html
Copyright © 2011-2022 走看看