苍穹外卖 Day 2

完成员工管理和分类管理两个模块

数据库设计

要将实体类的各种属性规定好,一般正常的实体数据要包括id,状态,创建时间、更新时间、创建人、修改人(这四个值可以为null),如果有唯一值的属性,就要设置索引(类型为unique)

创建时间用LocalTime(datetime)数据类型,id用Long(BigInt)类型

代码规范

/**加回车在函数头顶,书写注释,基本每一行都要注释

接口文档补充

controller的方法用@APIOperation注解

SQL提示

用右侧database导入数据库,然后右键SQL语句,showContextAction然后injectLanguage选择MySQL

mybatis驼峰命名

是指数据库的字段_能对应上实体类的属性名

新异常捕获

出现了用户名重复的异常,于是建立新的方法(加上ExceptionHandler注解)捕获异常,返回信息,打印日志

获取更改者/创建者id

这里现讲的是用ThreadLocal获取,这个类能自动获取当前线程的数据,用于共享同一个线程的数据。通过这个类的get和set方法就能灵活使用了。

出于规范(规划到环境类里,这样也好存储于容器中),定义一个context类,里面声明ThreadLocal的成员变量,然后再来使用。

使用这种方式结合jwt令牌来获取用户id,弹幕有说session和redis的技术,session因为服务器集群的关系不可用了。

分页查询

首先分页查询的方式是query不是json(?进行传参),然后进行DTO设计(类名加上query)当查询方式为query时,不需要加注解@RequestBody

mybatis提供的新插件pagehelper(需要导入依赖)

这个类提供的方法能够将Page存储到ThreadLocal里,并在动态SQL动态添加limit。也就是说分页查询时直接把所有符合条件的数据查出来(保存在page里面)然后pagehelper帮你分到指定页面,最后用page的getResult就能提取当前页面的数据。

新注解NoArgsConstructor和AllArgsConstructor

无参构造函数和全参构造函数,配合Data使用(get和set以及toString方法)

当查询方式为query时,不需要加注解@RequestBody

mybatis-x插件

json格式化

数据库里的记录时间需要格式化为yyy-MM-dd HH:mm:ss

方法一:在对应的成员变量上加注解@JSONFormat(pattern = "yyyy-MM-dd HH:mm:ss")

方法二:在webmvcconfig里加入消息转换器

protected void extendMessageConverters(List<HttpMessageConverter<?>> converters){

log.info("开启扩展消息转换器...");

//创建一个转换器对象

MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();

//设置对象转换器,可以将java对象转为json字符串

converter.setObjectMapper(new JacksonObjectMapper());

//将装换器对象放入spring MVC框架的容器中

converters.add(0,converter);//将转换器的顺序提前

}

路径参数

/admin/employee/status/{status}

@PostMapping("/status/{status}")

public Result startOrStop(@PathVariable Integer status,Long id)

请求路径规范

动态SQL编写

热部署

第一种手动方式:引入dev依赖,修改代码后重新build就行

第二种自动方式:

导入外部类

当我们导入外部写好的类时,需要将项目编译一下;因为我们手敲的代码是自动编译过的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值