通过idea搭建具有三层架构的springboot项目
其中的Dao层用Mapper标识,构造出来的项目结构大体如下
准备工作
通过application.yml文件配置数据库连接以及mybatis
spring:
#数据库连接信息
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.100.19:3306/tlias
username: root
password: ***********
#mybatis配置信息
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
yml配置文件相较于properties的优点
根据接口文档分别实现功能
controller层:主要用于接收请求,响应数据
参数的传递
根据RESTful规范,前端传递过来的请求方式大概分为GET,POPST,PUT,DELETE等几种
在(只)接收这几种请求方式时候,对应几种不同的注解。
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
//这几个注解都加上了@RequestMapping注解
这几种,在这几个注解后面可以加括号指定访问路径,例如
@RequestMapping("/depts")
注解可以加在方法之前,也可以加在类之前。
加了这种注解的类可以简化方法的注解例如
@RestController
public class DeptController {
//private static Logger log = LoggerFactory.getLogger(DeptController.class);
//@RequestMapping(value = "/depts",method = RequestMethod.GET)
/**
* 查询部门
*/
@Autowired
private DeptService deptService;
@GetMapping("depts/)
public Result list(){
log.info("查询全部部门的数据");
List<Dept> deptList = deptService.list();
return Result.success(deptList);
}
}
可以简化为
//在类上面添加了@RequestMapping注解
@RequestMapping("/depts")
@RestController
public class DeptController {
//private static Logger log = LoggerFactory.getLogger(DeptController.class);
//@RequestMapping(value = "/depts",method = RequestMethod.GET)
/**
* 查询部门
*/
@Autowired
private DeptService deptService;
@GetMapping
public Result list(){
log.info("查询全部部门的数据");
List<Dept> deptList = deptService.list();
return Result.success(deptList);
}
}
接收前端发来的请求参数
前端发来的请求参数可以分为以下几种
1,无请求参数
2,路径参数 例如/depts/{id}
3,json格式的参数
接收路径参数示例代码
@DeleteMapping("/{id}")
public Result delete(@PathVariable Integer id){
log.info("通过id删除部门:{}",id);
deptService.delete(id);
return Result.success();
}
方法在接收参数里面使用了@PathVariable注解
在接收json参数,可以定义多个变量进行接收,
@GetMapping
public Result page(String name, Short gender,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer pageSize) {
log.info("分页查询,参数:{},{},{},{},{},{}", name, gender, begin, end, page, pageSize);
PageBean pageBean = empService.page(name, gender, begin, end, page, pageSize);
return Result.success(pageBean);
}
@DateTimeFormat注解可以指定时间格式
需要注意的是,变量的名称必须和json中传递过来的参数一致。如果不一致的话,传递参数会失败。可以使用@RequestParam(“在此指定参数名称” Object object ),这个注解中还可以指定参数的默认值
在变量比较多的时候