1.RequestParam、RequsetBody、RequestPart的异同
(1)@RequestParam支持’application/json’(json数据类型),但需要手动解析(不常用),也同样支持multipart/form-data(文件类型)请求,也支持请求行参数,url?name=1
(2)RequsetBody常用来接收前端传来的json数据。
(3)当请求头中指定Content-Type:multipart/form-data时,传递的json参数,@RequestPart注解可以用对象来接收,@RequestParam只能用字符串接收。
2.Rest风格
定义了访问格式,使用URL定位资源,用 HTTP 动词(获取GET,新增POST,删除DELETE,更新PUT)描述操作。
对应GetMapping、PostMapping、DeleteMapping、PutMapper注解。
3.判空
CollectionUtils.isEmpty(List)//判断list是否为空
queryWrapper.in(boolean condition, R column, Collection<?> coll)//构造查询条件
Objects.eq(a,b)//会自动进行判空
equal需要先判空,防止空指针异常
4.若前端需要几个属性,不建议select *,而使用queryWrapper.select("字段1", "字段2","字段3"),加快查询速度。
5.实现接口后要进行测试。
6.什么是 “可重入”,可重入就是说某个线程已经获得某个锁,可以再次获取锁而不会出现死锁。加锁的线程里面也可以存在其他加锁的地方。
7.不建议使用selectOne,防止查询到多条记录报异常,建议Mysql拼接limit 1,Oracle where rownum = 1。
8.Sql语句不建议用or,可以用union代替。
9.编写代码顺序:检验参数是否为空;查询数据;逻辑处理;若有持久化,放到最后。批量增删改,需要使用事务,只有单条,由于是“隐性事务”,执行失败数据库不会有任何改变,所以不需要事务。