学习笔记:黑马程序员JavaWeb开发教程(2025.3.21)
10.7 案例-员工管理-分页查询-分析
形参的默认值可以使用注解来设置:@RequestParam(default = “1”)
10.8 案例-员工管理-分页查询-PageHelper插件
分页插件PageHelper帮助完成有关分页的所有操作,我们只要正常使用查询语句就可以了。插件会自动的获取到要执行的sql语句,将要执行的sql语句换成count(*),自动执行这条sql语句,还会对该sql语句进行改造,在后面加上limit关键字,而limit的两个参数,PageHelper会自动根据传递上来的两个参数,来计算起始索引核每一页展示的记录数,之后就获得了分页查询的数据,将分页查询的数据封装到Page<Emp>对象中,最终获取Page对象中封装的分页查询结果
右下代码块中,empList其实是Page类,所以要强转
使用PageHelper插件,对于控制层的代码,不需要修改,因为控制层是与前端交互,后端技术的迭代是不会影响他与前端的交互。只需要对服务层和mapper层修改
10.9 案例-员工管理-分页条件查询
只需要在原来的基础上,对于控制层和服务层,加上查询条件参数,对于map层,对sql语句进行修改
在controller层中的方法参数名,要和接口文档当中的参数名保持一致,要不然和前端接不上
对于日期时间类参数要想成功接收,要通过注解来指定需要前端传递过来的格式,使用@DateTimeFoemat
对于map层的修改,要使用where进行筛选,但是查询条件是动态的,所以要使用动态sql,动态sql使用xml文件来定义
Xml映射文件定义的三点规范:同包同名,在resource下定义和map文件相同的包
Xml文件的约束可以从mabatis官网上得到
第二点规范是,map标签的namespace必须和map接口的全类名保持一致
Sql语句的id必须与map接口的方法名保持一致,而且返回类型一致,xml文件中的返回类型是单条记录的返回类型
设置动态sql,例如,像name这样的属性可能没有输入,因此要使用if这样的标签来进行动态sql,使用test属性来指定条件。对于由于条件成立与否造成的语句报错,就是多一个where或者and之类的,应该使用<where>标签。<where>标签的作用是判断是否要生成where子句以及是否要去掉其中多余的and、or
对于name,没有传参的时候,还是有拼接根据姓名进行模糊匹配的语句,传递进来的参数实际是应该空字符串(这里是因为name是String类型,当为空的时候,传进来的不是null,是空字符串),但是在xml语句中,没有对中国条件进行筛选,因此应该增加条件
总结,条件分页查询分为条件查询和分页查询实现
在实操的时候,对于EmpServiceLmpl文件,中和map交互的部分产生疑惑,不知道该往哪里传参,应该往List<Emp> empList = empMapper.list(),往list方法中传递筛选条件参数