数据封装、参数接收、日志技术

 数据封装

Mybatis默认数据封装规则:

实体类属性名和数据库表的字段名一致,mybatis会自动封装

如果字段名和实体类属性名不一致解决办法:

1). 手动结果映射

在DeptMapper接口方法上,通过 @Results及@Result 进行手动结果映射。

@Results({@Result(column = "create_time", property = "createTime"),
          @Result(column = "update_time", property = "updateTime")})
@Select("select id, name, create_time, update_time from dept")
public List findAll();

2). 起别名

在SQL语句中,对不一样的列名起别名,别名和实体类属性名一样。

@Select("select id, name, create_time createTime, update_time updateTime from dept")
public List findAll();

3). 开启驼峰命名(推荐)

如果字段名与属性名符合驼峰命名规则,mybatis会自动通过驼峰命名规则映射。驼峰命名规则: abc_xyz => abcXyz

  • 表中字段名:abc_xyz

  • 类中属性名:abcXyz

在application.yml中做如下配置,开启开关。

mybatis:
  configuration:
    map-underscore-to-camel-case: true

要使用驼峰命名前提是 实体类的属性 与 数据库表中的字段名严格遵守驼峰命名。

参数接收

简单参数接收

  • 方案一:通过原始的 HttpServletRequest 对象获取请求参数

    /**
    * 根据ID删除部门 - 简单参数接收: 方式一 (HttpServletRequest)
    */
    @DeleteMapping("/depts")
    public Result delete(HttpServletRequest request){
        String idStr = request.getParameter("id");
        int id = Integer.parseInt(idStr);
        
        System.out.println("根据ID删除部门: " + id);
        return Result.success();
    }
  • 方案二:通过Spring提供的 @RequestParam 注解,将请求参数绑定给方法形参

    @DeleteMapping("/depts")
    public Result delete(@RequestParam("id") Integer deptId){
        System.out.println("根据ID删除部门: " + deptId);
        return Result.success();
    }

    @RequestParam 注解的value属性,需要与前端传递的参数名保持一致 。

    @RequestParam注解required属性默认为true,代表该参数必须传递,如果不传递将报错。 如果参数可选,可以将属性设置为false。

  • 方案三:如果请求参数名与形参变量名相同,直接定义方法形参即可接收。(省略@RequestParam)

    @DeleteMapping("/depts")
    public Result delete(Integer id){
        System.out.println("根据ID删除部门: " + deptId);
        return Result.success();
    }

json参数接收

  • JSON格式的参数,通常会使用一个实体对象进行接收 。
  • 规则:JSON数据的键名与方法形参对象的属性名相同,并需要使用@RequestBody注解标识。数据封装、参数接收、日志技术_第1张图片

 json格式的请求参数适用场景:主要在POST、PUT请求中, 在请求体传递请求参数 

路径参数接收

/depts/1/depts/2 这种在url中传递的参数,我们称之为路径参数。 那么如何接收这样的路径参数呢 ?

  • 路径参数:通过请求URL直接传递参数,使用{…}来标识该路径参数,需要使用 @PathVariable获取路径参数。如下所示:数据封装、参数接收、日志技术_第2张图片

如果路径参数名与controller方法形参名称一致,@PathVariable注解的value属性是可以省略的。

日志技术

Logback日志级别

日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下(优先级由低到高):

日志级别 说明 记录方式
trace 追踪,记录程序运行轨迹 【使用很少】 log.trace("...")
debug 调试,记录程序调试过程中的信息,实际应用中一般将其视为最低级别 【使用较多】 log.debug("...")
info 记录一般信息,描述程序运行的关键事件,如:网络连接、io操作 【使用较多】 log.info("...")
warn 警告信息,记录潜在有害的情况 【使用较多】 log.warn("...")
error 错误信息 【使用较多】 log.error("...")

可以在配置文件logback.xml中,灵活的控制输出那些类型的日志。(大于等于配置的日志级别的日志才会输出)

使用@Slf4j注解

@Slf4j
@RequestMapping("/depts")
@RestController
public class DeptController {

    @Autowired
    private DeptService deptService;

    /**
     * 查询部门列表
     */
    //@RequestMapping(value = "/depts", method = RequestMethod.GET)
    @GetMapping
    public Result list(){
        //System.out.println("查询部门列表");
        log.info("查询部门列表");
        List deptList = deptService.findAll();
        return Result.success(deptList);
    }
}

你可能感兴趣的:(数据封装、参数接收、日志技术)