数据库表是edu_teacher
service_edu模块
先代码生成器生成
然后在controller里@Autowired注入service,调用方法来实(@RestController,@RequestMapping在类上)
写application.properties配置文件
创建启动类@SpringBootApplication,内容为SpringApplication.run(当前类.class,args)
创建一个配置类@Configuration,加上@MapperScan("")扫描路径
细节
1.返回的json数据的时间和我们的时间差八小时,需要在配置文件设置
#返回json的全局时间格式 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8
2.需要获取路径中的值,要在xxxMapping("{xxx}")
在方法的参数里用@PathVariable来获取值
3.浏览器测试只能测get提交,其他方式比如post,delete得用测试工具比如swagger测
4.分页查询需要在路径里输入当前页和每页记录数,用@PathVariable来获取
条件组合查询带分页功能
先创建一个vo类,用来封装前端得到的条件。然后通过对象的方式传递给后端的接口
在对象前加@RequestBody会将条件都封装进一个json对象里来传递,而不加则是一个个单独的数据,required=false表示可以不填写,但是这种注解的方式必须是post提交。
//条件查询并分页,以对象形式得到条件
@PostMapping("pageTeacherCondition/{current}/{limit}")//用RequestBody传递json对象到对象中,需要使用post
public R pageTeacherCondition(@PathVariable long current,
@PathVariable long limit,
@RequestBody(required = false) TeacherQuery teacherQuery) {
//创建page对象
Page pageTeacher = new Page<>(current, limit);
//构建条件
QueryWrapper wrapper = new QueryWrapper<>();
//多条件组合查询
//动态sql,判断条件值是否为空,不为空就拼接条件
String name = teacherQuery.getName();
Integer level = teacherQuery.getLevel();
String begin = teacherQuery.getBegin();
String end = teacherQuery.getEnd();
if (!StringUtils.isEmpty(name)) {
wrapper.like("name", name);
}
if (!StringUtils.isEmpty(level)) {
wrapper.eq("level", level);
}
if (!StringUtils.isEmpty(begin)) {
wrapper.ge("gmt_create", begin);//大于等于
}
if (!StringUtils.isEmpty(end)) {
wrapper.le("gmt_create", end);//小于等于
}
//排序,按时间降序
wrapper.orderByDesc("gmt_create");
//调用方法查询并分页
teacherService.page(pageTeacher, wrapper);
long total = pageTeacher.getTotal();//总记录数
List records = pageTeacher.getRecords();//数据集合
return R.ok().data("total",total).data("rows",records);
}
在实际开发中,这些具体的代码应该写在serviceimpl里,controller里不写具体代码,只是调用service的方法。



