条件查询
开发工具与关键技术:VS C# 作者:宋永烨 撰写时间:2019-6-2
当用户查看表格的大量数据是,由于数据量过于巨大会导致很难获取到需要的数据,在这时,就需要一个方法,一个可以通过用户输入获取到用户需要的数据并回填入表格,
1.获取用户输入
这是条件查询的第一步,首先获取到用户的输入,然后在查询数据时,通过查询方法的筛选功能,将不需要的数据全部除去,只留下与用户输入的数据匹配的,然后将查询好的数据返回给页面
获取值,使用插件会更快
通过jQuery的插件,选中用户输入的文本框,然后在通过插件修改jQuery的value值,赋值为控制器传来的数据
2.上传
第二步,上传,通过异步提交将数据传入数据库,如果不是什么敏感信息,就可以用get, get传数据更快
用户查询的输入除input文本框外,还会用到下拉框,大量的下拉框,所以封装一个下拉框赋值的方法会节省很多时间,
该方法使用两个参数,url:查询方法的物理路径,用来链接到查询的方法,id:通过ID选择器选与东中的中需要删除的元素的父元素过jQuery插件的方法删除它的所有子元素,然后再往里面添加一个元素,一个label元素,.
使用each遍历所有的需要删除与添加的父元素,将他们的值修改为控制器查询出的值,之后就可以直接调用这和函数, 进行引用
3.查询
创建一个可以被layui接收的数据,一些接收视图层传来的数据,此处变量的名称需要与视图层传输的值对应的键对应,数据类型不要搞错.
接下来就是查询,连表查询所有的需要的字段
由于代码太多,此处只列举一部分,连表查询数据,表与表之间通过共同的键进行链接,
select new 后面接的变量必须包含需要查询的所有字段
因为option的值获取的不是文本值而是value值,而有一部分下拉框可能没有选这,没选择的即空的下拉框的option的value1值被设置为0,故只需判断传参是否大于零即可判断该下拉框是否勾选
当传来的参数大与0时,将该参数在已查询的包含所有字段的变量中查询并赋值给自己,即保留与传参匹配的值,int类型的接如此
除下拉框外,还有用户输入的文本框,传输时使用字符串类型的值,判断上都稍微有点不同
通过string.IsNullOrEmpty判断是否为空,取反即为是否不为空,如果不为空,则将用户输入的字符串在listTitles中查找,当然需要去空格,查找方式也有所不同,通过Contains方法判断用户输入的字符串是否在listTitles中出现过,然后赋值给listTitles
获取listTitles的长度,创建一个TitlesInfor(可以存储所有需要的字段)类型的列表的变量layuiTableData, listTitles的倒序排序,通过它的ToVoidNo为false
Skip为跳过的数据条数,该效果用于判断分页后的那一页该显示的数据的开头,跳过的数据个数为(此处需要一个实体类),通过获取每页显示的数据条数与当前的页数的个数
Take 返回指定数量的数据,用于决定每页的数据个数,值同样通过实体类进行计算与赋值
然后创建一个可以接收TitlesInfor的用于给layui进行分类的数据类型layuiTableData
然后将totals赋值给count即获取数据的条数, listTitles赋值给data,倒序排序的查询出的数据,data可以接收listTitles的数据类型,因为它们数据类型相同
最后,将打包封装好的数据传输给layui即可显示出用户想看到的数据
以上便是一个完整的条件查询
由于篇幅关系,就再写一些与查询语句有关的
一个简单的查询,将实例化的数据库中的某张表赋值给tb,然后查询tb即获取整张表赋值给list1,一个简单的查询就完成了,接下来只要将数据返回给页面,处理后即可在页面上显示
上图为另一种写法,较之于第一种,代码更少,此方法在查询的表较少(最好是单表),筛选的条件较少时,优势十分明显,但在多张表链接,筛选的条件过多时,此方法的代码结构会较为混乱,而正常的方法的优势就是条理性更强,更容易被理解,此写法的优势是,在查询的代码结构较为简单是,使用这种写法更加便捷
新增与修改的区别
新增一条数据需要查询需要增加的数据,然后收集每个字段的数据,再赋值,最后将数据添加到数据库中
而修改是查询到需要修改的数据,获取需要修改的字段需要修改的信息,然后再数据库中找到原数据后替换为新数据
过程大致相同,都需要获取到新增或修改的字段后赋值,然后添加到数据库或修改数据库原有的资料
但是,修改相较之于新增,最大的区别就是,修改必须传一个主键ID,否则当代码修改时会报错,原因是修改需要先找到原数据,而字段再数据库中的唯一属性就是主键ID
既然,查,增,改都有了,那就再来一个删除吧
删除本身很简单,只要获取需要删除的数据的主键ID然后通过主键ID去查询,查到了,删除,查不到,报错,但数据之间的关联导致删除是一件很麻烦的是(删除的判断太多导致篇幅太长就不截完整的删除了)
比如删除一个学生的信息,那需要去学生表删除学生的信息,一般还有明细表,用户表等,否需要一并删除掉
再比如删除一个学院,那他下面的专业怎么办?年级,班级,学生呢?所以删除很繁琐,但又不难,实在不行就不删除,改停用
这就是删除的代码,特简单,一个查询,单表的,查询的筛选条件是需要删除的数据的主键ID
查询后直接通过remove删除掉就没了,但删除前需要大量的判断,多到怀疑人生,还要考虑关联信息,有些数据基本就删除不了,所以主表的信息一般都不建议删除,比如用户表,一个社交软件
用户表关联的数据太多,还是停用来的稳妥.
总结:下拉框的绑定可能使用次数很多,封装成一个方法可以有效减少重复的代码
给下拉框保留一个空的(此处的空的指无查询条件的),value值设置为0,且value最好为整形,即方便接收,又方便判断是否为空
字符串的判断方法与整形的判断方法,查询方法皆不相同,切勿搞混
代码来源与教师
- 按拼音模糊匹配查询条件的生成类
- Linq的条件查询
- Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
- SQL 查询语句中交叉条件的应用!
- 如何让从数据库中查询出符合条件的记录,然后给每个记录自动加上序号,序号是根据符合条件的记录多少在随时变化.而且也会在以查询生成的报表中显示出来.谢谢
- 动态多条件查询分页以及排序(一)--MVC与Entity Framework版url分页版
- mongodb 查询结果保存为结果集以及根据条件导出数据
- Hibernat 使用Criteria查询多对多关系(SET集合)条件
- MySQL实现字符串分割并按条件分组查询并统计个数
- Hibernat 使用Criteria查询多对多关系(SET集合)条件
- left outer join 结合条件查询
- Hbase scan通过rowkey条件查询
- 改写Spark JdbcRDD,支持自己定义分区查询条件
- 带条件分页查询的主数据列表(施工单位为例)
- Android中使用OrmLite(二):复杂条件查询
- 使用Python读取TestTrack记录- Part3 动态生成Linq to xml查询语句筛选条件
- pandas全表查询,根据条件返回。记录一次爬坑过程。
- ibatis动态查询条件
- ABAP 动态查询条件
- hibernate 3.0 多条件查询方法