Sql分页

功能注意

db.SqlQueryable只支持简单查询的Sql不能是存储过程和一些特殊逻的Sql,复杂特殊SQL请看文档 【原生Sql

1、查询分页

注意: order by写外面

int total=0;
var list = db.SqlQueryable<Student>("select * from student")
        .Where(it=>it.Id==1)//可以表达式
         .OrderBy("id asc")//也可以SQL
         .ToPageList(1, 2,ref total);

//使用in
var list2= db.SqlQueryable<Student>("select * from  student where id in (@ids)  ").AddParameters(new SugarParameter[] {
            new SugarParameter("@ids", new int[] { 1, 2 })
            })
            .OrderBy("id asc")
            .ToPageList(1,2);

//当我们不需要分页等操作时,请使用db.Ado.SqlQuery,这个功能支持的更全面
var list = db. Ado.SqlQuery<Student>("复杂Sql或者存储过程");

2、结合表达式

var list= db.SqlQueryable<Student>("select * from student").Where(it=>it.Id==1).ToPageList(1, 2);

3、更多用法

var list= db.SqlQueryable<Student>("select * from student").Where("id=@id",new { id=1}).ToPageList(1, 2);

//如果多个参数 new { id=1 , name="xx"} 用逗号隔开

4、添加参数

var list = db.SqlQueryable<Student>("select * from student  where id=@id").AddParameters(new { id=1}).ToPageList(1, 2, ref total);
//如果多个参数 new { id=1 , name="xx"} 用逗号隔开

AddParameters 有很多重载

ISugarQueryable<T> AddParameters(object parameters);

ISugarQueryable<T> AddParameters(SugarParameter[] parameters);

 ISugarQueryable<T> AddParameters(List<SugarParameter> parameters);

5、无实体操作

var list= db.SqlQueryable<object>("select * from student").Where("id=@id",new {id=1 }).ToDataTablePage(1, 2);

6、参数IN用法

 
 var list= db.SqlQueryable<object>("select * from [order] where  id in(@ids)" )
           .AddParameters(new{ids= new int[] { 1,2,3}} )//这儿id需要一个数组
           .ToList()

5、联表多对象映射

和Dapper中的Query<T,T2>效果一样,可以一维对象变成2维护的

var list=db.SqlQueryable<SQLVO>("select 1 as id,'jack' as name ").ToList();
    
        
public class SQLVO 
{
     [SugarColumn(IsOwnsOne =true)]
     public ITEM1 ITEM1 { get; set; }//item1和item2不能有重复字段
            
     [SugarColumn(IsOwnsOne = true)]
     public ITEM2 ITEM2 { get; set; }//item1和item2不能有重复字段

}
public class ITEM1 
{
     public int ID { get; set; }
}
public class ITEM2
{
    public string Name { get; set; }
}

效果图

image.png


7、存储过程和复杂SQL

https://www.donet5.com/Home/Doc?typeId=1198

关闭
果糖网