介绍一些我尝试的mysqlSugar的数据库操作

修改密码

var status =  db.Update<Users>(new { password = user.password }, it => it.username == user.username);

更新数据(防止空值一起更新)

首先封装一个函数(判断是否为空或者数值为0),当然sqlsugar有自己的查询函数,判断值不为空且大于0  SqlFunc.HasNumber(object thisValue)

        public  void ForeachDisableColumns<T>(T model)
{
Type t = model.GetType();
PropertyInfo[] PropertyList = t.GetProperties();
foreach (PropertyInfo item in PropertyList)
{
string name = item.Name;
object value = item.GetValue(model);
if (value == null || value.ToString() == "")
{
db.AddDisableUpdateColumns(name);//新语法添加禁止更新列
} }
}

则结合以上函数,更新数据的用法

       ForeachDisableColumns(user);
      db.Update<Users>(user, it => it.userid == user.userid);

批量更新,同样使用上述封装的方法

            string strArr = "[{'name':'Kotonami','userid':'1'},{'name':'Akinama','userid':'17'},{'name':'Momozawa','userid':'6'}]";

            List<Users> newuser = JsonConvert.DeserializeObject<List<Users>>(strArr);
//批量更新 数据量小时建议使用大于十条用SqlBulkReplace
foreach (var item in newuser)
{
ForeachDisableColumns(item);
}
db.UpdateRange(newuser);
db.DisableUpdateColumns = null;//清空禁止更新

返回行数

            var list5 = db.SqlQuery<int>("select userid from Users limit 0,1").SingleOrDefault();

跨表查询,查询某班级学生的姓名和学号

         //方法1
outStr = db.SqlQueryJson("select name from Users,Class where class.stuid = Users.userid and class.classid = '" + newclass.classid + "'");
//方法2
outStr = db.Queryable<Class>()
.JoinTable<Users>((cl, us) => us.userid == cl.stuid)//两表共有的条件on.....
.Where<Class>(cl => cl.classid == newclass.classid)//主表的条件where.....
.Select("name,sex")
.ToJson();

三表查询 查询班级名称,该班级的学生姓名和用户id

            outStr = db.Queryable<Class>()
.JoinTable<Users>((cl, us) => cl.stuid == us.userid)
.JoinTable<MyClass>((cl, mc) => cl.classid == mc.classid)
.Where(cl => cl.classid == newclass.classid)
.Select("name,sex,className")
.ToJson();

批量插入

            string strList = "[{'classid':'2','stuid':'2'},{'classid':'2','stuid':'1'},{'classid':'2','stuid':'3'}]";
List<Class> cl = JsonConvert.DeserializeObject<List<Class>>(strList);
foreach (var item in cl)
{
try
{
db.Insert(item);
outStr = "插入成功!";
}
catch (Exception ex)
{
outStr = ex.Message;
} }

查看学习Math课程的学生的数量和名字

            //方法1 但是稍显复杂
outStr = db.Queryable<Class>()
.JoinTable<Users>((cls, us) => cls.stuid == us.userid, JoinType.Inner)
.JoinTable<MyClass>((cls, mc) => cls.classid == mc.classid && mc.classType == "Math", JoinType.Inner)
.Select("name").ToJson(); //方法2 也不简单
outStr = db.Sqlable()
.From("Class", "cl")
.Join("Users", "us", "cl.stuid", "us.userid", JoinType.Inner)
.Join("MyClass", "mc", "mc.classid", "cl.classid", JoinType.Inner)
.Where("mc.classType = 'Math'")
.SelectToJson("name"); //方法3
outStr = db.SqlQueryJson("SELECT name FROM users,class,myclass where users.userid = class.stuid and class.classid = myclass.classid and classType= 'Math'");

分页查询

            //这里我创建了一个Page类来接收页面的Index和Size
  
       var pageIndex = pages.pageIndex;
var pageSize = pages.pageSize;
var totalCount = ; var page = db.Queryable<Users>()
.OrderBy(it => it.userid)
.ToPageList(pageIndex, pageSize, ref totalCount); int totalpages = totalCount + / pageSize;//保证最后一面即使不满足pagesize也占一面
pages.totalPages = totalpages;
       //最后你可以处理成Json返回你要的数据

简单去重

            outStr = db.Queryable<Users>()
.Select("username,password").GroupBy("username,password").ToJson();
// 性能优于distinct

最新文章

  1. REDHAT一总复习1 NTP更改时区,并验证时区设置是否正确
  2. Linux中的用户和用户组
  3. android studio增量更新
  4. UISlider常见属性
  5. CentOS学习笔记&mdash;启动、ROOT密码
  6. WCF入门(十二)---WCF异常处理
  7. 同时使用ADO与Excel类库冲突的问题
  8. 程序员面试题精选100题(38)-输出1到最大的N位数[算法]
  9. Oracle statspack 安装及使用
  10. Cyclic Nacklace - HDU 3746(next求循环节)
  11. .Net Attribute详解(一)
  12. POJ 2409 Let it Bead 组合数学
  13. window7环境下VMWare自定义安装Linux虚拟机完全教程
  14. Struts2的运行机制简介
  15. shiro笔记-AuthenticatingRealm和AuthorizingRealm关系
  16. 利用微信支付的订单查询接口可以在APP 中提高支付的可靠性
  17. 8.04-book
  18. Spring的Bean配置
  19. windows系统下mysql-8.0.13-winx64(zip安装)
  20. javascript删除cookie

热门文章

  1. Hadoop中Partition的定制
  2. Git删除master branch中最近一次的提交
  3. 整数划分——真正的递归经典例题(NYOJ——90)
  4. 【eclipse-js验证】
  5. C#中的自动属性、隐式类型var、对象初始化器与集合初始化器、扩展方法
  6. [CentOS7] firewalld重启失败 Failed to start firewalld - dynamic firewall daemon.
  7. PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
  8. BZOJ 1012【线段树】
  9. Python爬虫开发
  10. 《H5+移动应用实战开发》已出版