条件查询方法

条件查询可以分为单条件查询跟多条件查询。单条件的查询比较简单,而多条件查询就难一点,但是只要明白控制器跟数据库之间的联系,那么单表查询跟多表查询都不是很难的。
一、多条件查询

  1. 在多条件查询之前,在页面上,得先获取要查询的条件,你要查询哪张表,表里的哪些数据,就可以先在页面上获取到先;
  2. 获取到查询的条件之后,就得判断一下要查询的数据是否为空,是否是找得到的,因为如果是找不到的话,那么在控制器写了查询的方法之后一启动,然后浏览器上面就会出现找不到的现象,甚至会报错。所以得判断一下;
  3. 判断完数据之后,就得加载一下数据的表格,即是数据表格的重载,而数据表格的重载又分为自动化渲染跟方法级渲染的重载。这两个方法都用了reload的方法,只是用法不太一样。自动化渲染的重载:
tabStudent = layuiTable.reload("tabStudent", {
//路径
                  url: "",
                  where: {
//第一个为形参,第二个为实参
                 	 AcademeID: AcademeID, 
                      GradeID: GradeID,
                      ClassID: ClassID,
                      StudentDetail: StudentDetail
             }
 });

而方法级渲染的重载就是:

tabStudent.reload({
//路径
                url: "",
                where: {
//第一个为形参,第二个为实参
                    AcademeID: AcademeID,
                    GradeID: GradeID,
                    ClassID: ClassID,
                    StudentDetail: StudentDetail
                }, page: {
//重新从第一页开始
                    curr:1 
    }
});
 这上面的路径是要在控制器那边写上它的方法才可以把它复制粘贴到里面,或者你写了那个要控制器传输到页面的方法名称,然后再复制粘贴到控制器写一下它的方法都可以。

而这个路径一点的差错都不能有,有一点差错的话都会报错,而且数据报异常之后都会提示你路径是否错误或者文件名字已改,找不着。
4. 然后写完之后就到控制器写方法,首先控制器那边要传进来你在页面声明的那几个变量,既然是多张表联表查询,当然是要分页比较好一点。
而想要实现分页,就得创建一个实体类,名叫LayuiTablePage的类,然后再到页面写一下分类的代码,再回到控制器那边把它当做参数传进来,就可以实现分页的效果了。
5. 在这个方法里面写内容首先就是要联表查询,而联表的条件就是join…in
…on…equals…;

然后表连接完之后在后面new一个实体对象,再在实体对象后面的花括号里面写你要查询的信息:比如
在这里插入图片描述
6. 这个写完了之后就到了条件筛选了,这个条件的筛选是用Lambda表达式来写的,因为这个的代码简化了一些
在这里插入图片描述
这个就是利用Lambda表达式写出来的条件筛选;
7. 然后就要计算一下数据总的条数
8. 再分页处理一下,把在页面写的分页数据,在控制器这里分三步曲走:
第一就是Skip,这是开启分页,第二步是Take指定分页的条数,最后就是ToList一下;
但是最重要的一点就是,Skip跟Take使用之前,一定要使用orderby进行排序,要不然浏览器启动绝对会报错
在这里插入图片描述
9. 分页完成还得实例化一下数据,实例化数据也有两种写法,一就是

//**new对象 实例化**(一)
        LayuiTableData<EmployeeVo> layuiTableData = new LayuiTableData<EmployeeVo>
        {
             data = dbEmployee,
//总数据
             count = totalRow
};

二是

//new对象 实例化(二)
      LayuiTableData<EmployeeVo> layuiTableData = new LayuiTableData<EmployeeVo>();
      layuiTableData.data = dbEmployee;
layuiTableData.count = totalRow;

这些括号里面的内容都是根据需要创建的实体类
10. 最后一步当然就是返回了。
二、单条件查询
1.单条件的查询就比较简单一点,直接可以在控制器那边写一下查询就可以了
查询之前可以先new一个实体对象,然后再写单表的查询;也可以直接不用new就直接查询
如果是先new一下的话,
在这里插入图片描述
然后把listPosition直接等然后后面接查询的表
如果不是new一下的话,就直接等过去然后查询就可以了
在这里插入图片描述
还有最后一定记得得写返回值
想要哪张表的信息,就可以查哪张表,但是在数据库里面得找得到你想要查的表,自己胡乱查是没有数据的。
查询之前看一下数据库里面有哪些表,以及那些表与表之间的联系,这些表的联系可以一对一,也可以一对多,还可以多对多,就是一张表可以连接多张表,也可以被多张表连接;而多对多其实以n个一对多的组合,即通过一个“关系表”来联系“n个实体表”。
在这里插入图片描述

就像上面的那张表一样,那张用户表就是多对一的表,看箭头的指向就知道了,用户表被其他很多张表对应着,而那张新得表就是一对多的表,就是这张心得的表对很多张其他的表,这是表与表的对接关系,而他们的连接是靠外键把表连接起来的。上面那张图里那个pk是主键来的,而那个fk就是外键了。但是一张表里面只能有一个主键,因为要跟主键ID来排一下序的,而外键就不一样,外键可以有很多个。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值