mysql sqlsugar_sqlSugar的使用---入门
一,新建.net core web项目
二. 项目引入包:sqlSugarCore
三.创建两个表:user, department
四. 新建model(不一定需要与table相同,使用[SugarTable("tableName")]进行model与table的绑定)
namespaceSqlSugarTest01.Models
{
[SugarTable("user")]public classUserModel
{
[SugarColumn(IsPrimaryKey=true,IsIdentity =true)]//如果是主键,此处必须指定,否则会引发InSingle(id)方法异常。
public int id { get; set; }public string userName { get; set; }public string userPassword { get; set; }public int age { get; set; }public DateTime regTime { get; set; }public int departmentId { get; set; }
}
}
5.编写代码进行数据库操作,此处为了简便,我书写在HomeController中,开辟了一个方法区,在Index的return view()之前调用,以便进行调试。
(1)数据库连接以及监听
//创建连接实体对象
SqlSugarClient db = newSqlSugarClient(newConnectionConfig()
{
ConnectionString= "server=localhost;port=3307;uid=root;pwd=root;database=testsqlsugar",
DbType= DbType.MySql,//设置数据库类型
IsAutoCloseConnection = true,//自动释放数据库,如果存在事务,在事务结束之后释放。
InitKeyType = InitKeyType.Attribute//从实体特性中读取主键自增列信息
});//aop监听sql,此段会在每一个"操作语句"执行时都进入....eg:getbyWhere这里会执行两次
db.Aop.OnLogExecuting = (sql, pars) =>{string sqlStempt = sql + "参数值:" + db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it =>it.Value));
};
(2)单表查询
/*查询---单表*/
var list = db.Queryable().ToList();//查询所有
var getById = db.Queryable().InSingle(1);//根据主键查询(model中必须同步标识主键[SugarColumn(IsPrimaryKey =true,IsIdentity =true)])
var total = 0;var getbyWhere = db.Queryable().Where(it => it.age == 18).ToPageList(1, 2, ref total);//根据条件查询/分页.
(3)双表查询
/*查询---多表*/
var list0 = db.Queryable((user, dep) => new object[] {
JoinType.Left,user.departmentId== dep.id}).Select((user, dep) => new { Id = user.id, depId = user.departmentId, name =user.userName }).ToList();//生成的sql: SELECT `user`.`id` AS `Id` , `user`.`departmentId` AS `depId` , `user`.`userName` AS `name` FROM `user` user Left JOIN `department` dep ON( `user`.`departmentId` = `dep`.`id` )//可用预先定义好的dto类自动填充select结果集,自动填充会比较依赖字段取名规则(不指定对应关系)
List list1 = db.Queryable((user, dep) => new object[] { JoinType.Left, user.departmentId == dep.id }).Select().ToList();//可用预先定义好的dto类填充select结果集(指定对应关系)
List list2 = db.Queryable((user, dep) => new object[] { JoinType.Left, user.departmentId == dep.id }).Select((user, dep) =>
new userDepDto { Id = dep.id, userName = user.userName, regTime = user.regTime, name = dep.name }).ToList();
(4)多表查询分页
//多表查询分页
var list4 = db.Queryable((user, dep) => new object[] { JoinType.Left, user.departmentId == dep.id }).Select((user, dep) => new userDepDto { Id =user.id, userName= user.userName, regTime = user.regTime, name = dep.name }).ToPageList(2, 2);
(5)三表查询
//三表查询,返回完整的三表对象。
var list3 = db.Queryable((user, dep, userinfo) => new object[] { JoinType.Left, user.departmentId == dep.id, JoinType.Left, user.id ==userinfo.UserId }).Where((user, dep, userinfo)=> user.age == 18 || dep.id == 1 || userinfo.Sex == "男")
.OrderBy((user)=> user.id).OrderBy((user, dep) => dep.id, OrderByType.Desc).Select((user, dep, userInfo) => new { user = user, dep = dep, userInfo = userInfo }).ToList();
(6)两个Queryable的join
//两个Queryable的join
var q1 = db.Queryable((user, dep) => new object[] { JoinType.Left, user.departmentId == dep.id }).Select((user,dep)=>new userDepDto()
{ Id=user.id,userName=user.userName,regTime=user.regTime,name=dep.name});//在此处,sql语句还没真正执行,aop也监听不到
var q2 = db.Queryable();//inner join
var innerJoinList = db.Queryable(q1, q2, (j1, j2) => j1.Id == j2.id).Select((j1, j2) => j1).ToList();//此处sql才真正执行//left join
var leftJoinList = db.Queryable(q1, q2, JoinType.Left, (j1, j2) => j1.Id == j2.id).Select((j1,j2)=>j1).ToList();
(7)多表简化查询(当我们不需要left join和right join时,使用inner join可以简写查询语句)
//简化查询 双表查询
var list5 = db.Queryable((user, dep) => user.departmentId == dep.id).Select((user, dep) => new{ user.id, user.userName, dep.name }).ToList();//三表查询
var list6 = db.Queryable((user, dep, userinfo) => user.departmentId == dep.id && user.id == userinfo.UserId).Select((user, dep, userinfo) => new { user = user, dep = dep, userinfo =userinfo }).ToList();//3表分页查询
var list7 = db.Queryable((user, dep, userinfo) => user.departmentId == dep.id && user.id == userinfo.UserId).Select((user, dep, userinfo) => new { user.id, user.userName, user.age, dep.name, userinfo.Sex }).ToPageList(1,2);
mysql sqlsugar_sqlSugar的使用---入门相关推荐
- mysql数据应用从入门_MYSQL数据库应用从入门到精通----读书笔记
mysql 1.创建数据库 create database database_name; 2.查看数据库 show database_name; 3.选择数据库 use database_name; ...
- MySQL高可用--MGR入门(4)异常恢复
点击蓝字 关注我们 前文阅读: 1.MySQL高可用--MGR入门(1)单主/多主模式搭建 2.MySQL高可用--MGR入门(2)组复制监控常用相关表 3.MySQL高可用--MGR入门(3)单主/ ...
- MySQL高可用--MGR入门(3)单主/多主模式切换
点击蓝字 关注我们 前文阅读: 1.MySQL高可用--MGR入门(1)单主/多主模式搭建 2.MySQL高可用--MGR入门(2)组复制监控常用相关表 实验演示规划:(3台虚拟机,MySQL版本为8 ...
- matlab 写入 MYSQL_阿里开源MySQL中间件Canal快速入门
前言 距离上一篇文章发布又过去了两周,这次先填掉上一篇秒杀系统文章结尾处开的坑,介绍一下数据库中间件Canal的使用. 「Canal用途很广,并且上手非常简单,小伙伴们在平时完成公司的需求时,很有可能 ...
- 视频教程-MySQL数据库应用快速入门培训课程-MySQL
MySQL数据库应用快速入门培训课程 5年JAVA 开发经验,2年系统架构经验,PMP项目管理资格认证,ACP 项目管理认证,工作过程同时参与性能.自动化测试工作,负责测试部门的测试架构,项目服务器运 ...
- 视频教程-19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程-MySQL
19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程 7年的开发架构经验,曾就职于国内一线互联网公司,开发工程师,现在是某创业公司技术负责人, 擅长语言有node/ja ...
- MySQL零基础从入门到精通(函数篇)
MySQL零基础从入门到精通(函数篇) 在MySQL中,为了提高代码重用性和隐藏实现细节,MySQL提供了很多函数.函数可以理解为别人封装好的模板代码. 分类 聚合函数 数学函数 字符串函数 日期函数 ...
- MySQL数据库,从入门到精通:第十四篇——MySQL视图详解
MySQL数据库,从入门到精通:第十四篇--MySQL视图详解 第 14 篇_视图 1. 常见的数据库对象 2. 视图概述 2. 1 为什么使用视图? 2. 2 视图的理解 3. 创建视图 3. 1 ...
- MySQL零基础从入门到精通(进阶SQL优化篇)
MySQL零基础从入门到精通(进阶SQL优化篇) SQL优化 insert 如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化. insert into tb_test value ...
最新文章
- HDU4716 A Computer Graphics Problem
- linux c 内存泄露 检查工具
- Kali国内源更新sources.list
- 如何修改maven默认jdk配置
- eclipse热部署_Spring Boot Devtools热部署
- my appointment Fiori customizing里的Calendar checkbox的实现逻辑
- Elasticsearch生态技术峰会 | Elasticsearch在企查查的应用实践
- JS 浏览器扩展storage
- java怎么实现tab切换_[Java教程]用javascript实现tab切换
- win10想说爱你不容易——安装.net3.5也是一个坑(已有完美解决方法)
- 重磅!原清华副校长任职南科大校长:他考研三次,读博七年,想做科研人偶像...
- 虚拟化--062 vsphere workstation bios启动
- 最近尝试移植了一下java.awt/javax.swing
- DOTA版设计模式——责任链
- 【SQL server】数据库的彻底卸载
- Java 常见的面试题(反射)
- 【微信小程序|组件库】一款清新且简洁的卡片样式
- springmvc ajax 传参
- 健身 宏效 -大道至简
- php开发之Composer包