多表的查/增/修
开发工具与关键技术:MVC
撰写时间:2019.05.05
一、多表的多条件查询(表格的数据初始化—也就是分页数据查询)
在多条件查询的时候,有下拉框的要先把下拉框数据查询出来; 分页查询时就必须要用到LayuiTablePage ,接下来以查询学生表信息为列:
首先用学生表连接学院表,学生表里面的学院ID和学院表里面的学院ID是主键和外键的关系,所以只要一连表,就可以获取学院表里面的学院名称;学生表连接专业表,学生表里面的专业ID和专业表里面的专业ID同样也是主外关系,连表之后就可以获取专业表里面的专业名称;以此类推 就可以获取年级表的年级名称、班级表的班级名称、用户表的账号。
经过分析的知总共有6个表,也就是说想要查询到这些数据,就必须把这6个表连起来—
因为所需要的数据不在同一个表,所以就相当于 我要把这些数据全部放到同一个表中,这样也方便之后我处理数据,所以需要建立一个实体—类,可命名为:studentVo ,然后把所需要的全部信息都放到里面去,但大部分的数据都是来自于学生表,所以建立的实体studentVo可以继承一下学生表,也就是 studentVo:PW_Student
接下来就可以联表查询,查出所需要的所有数据,放到studentVo 实体对象里。
在控制器中将6张表进行联表查询,首先学生表连接学院表 根据的条件是 学生表中的学院ID 等于 学院表中的学院ID;接着连接专业表 依据的条件是 学生表中的专业ID 等于 专业表中的专业ID …… 以此类推进行连接。接下来就是用orderby 根据学生表的学生ID 进行倒叙排序(好处就是把新增进来的数据放在表格的第一条,原因是因为根据学生ID进行排序,新增的学生ID都是最大的所以会自动排在第一条)然后再查询 select new studentVo 新建的 studentVo 实体对象
查询完基本数据后,就要对数据进行 “计算数据总条数据”然后再 “提取分页数据”
最后实例化一下,再返回json
好了,表格数据初始化完成之后,接下来就是多条件查询了----
多条件查询包含(条件查询,模糊查询):需要对数据进行多条件查询的话,首先要获取查询的条件,也就是要获取下拉框查询的数据和搜索框的数据,列:学院、年级、班级 下拉框 和 学号/姓名的模糊查询。
声明 学院ID 等于 下拉框中的学院 id,当然在控制器中也要进行条件筛选
因为涉及到条件查询,所以要对数据进行筛选,要获取他们的筛选条件
还有别忘了对数据进行重载,获取的数据ID要一致,重载之后要把where的方法传到url内。
既然把多条件查询的方法写好之后,要把searchTabStudent 传到(视图)初始化layui模块内,然后初始化进行完成之后马上进行数据重载也就是调用多条件查询方法,噢别忘了对初始化学生信息表,进行调改
二、多表的新增(以学生表为例)
第一步:弹出新增模态框
HTML新增模态框的from 表单Id—清空表单,绑定下拉框数据,弹出新增模态框,
在视图中打了弹出新增模态框的方法之后,也要在控制器中把方法数据获取的到
第二步:保存新增
首先获取页面数据,因为有身份证号,所以要对身份证号进行验证,我设置的是15位或者18位数的身份证号码长度,利用正则表达式;然后再对数据进行完整性判断,判断数据是否为空,打开加载层,获取from表单里面的id 提交表单,把路径写到新增模态框的模态框内容from里面
第三步:在控制器中写新增
分析数据都是来自于哪个表,在新增里需要用到学生表,再给学生表new一个表对象,new的表字段就可以从而接收到页面传过来的数据,所以我既然要用到这个表格来接收,就说明页面上的name值和控制器中的字段是要一模一样的,因为要判断所以呢就要把数据放到:try{} catch(Exception){}里面,
要做两次判断:第一次判断数据中是否已经存在该学生信息也就是说新增的数据是否与数据库中的数据重复;第二次数据库里面的学生的IDNum身份证号如果等于new的表传过来的身份证号相等或者是学生表里面学生的学号如果等于new的表传过来的学号与数据库中重复,那新增失败
三、多表的修改
点击某一条数据的时候弹出修改模态框,并实现数据回填,然后在修改学生的数据点击保存之后 显示修改成功
第一步:设置操作按钮—弹出修改模态框----回填数据
重置表单,下拉框数据绑定,查询学生信息-回填数据,弹出修改模态框。先要在控制器查询学生的信息,然后再回填数据(也就是根据ID查询学生信息)然后根据自定义命名把数据传到页面,并且进行数据回填
第二步:保存修改
获取到from表单的id ,把路径写到修改模态框的模态框内容from中,获取页面数据,因为身份证是唯一的位数也是固定的所以要对身份证信息进行判断,再对数据完整性进行验证
第三步:保存修改的学生数据(控制器)
判断学生信息是否与数据库的数据重复,然后在进行修改,接着提取修改的学生信息,保存修改