实习日记,11day

  1. batch(分批处理/一批) patch(修补/补丁)
  2. 请求方式对比:
    只是根据公司规定而被赋予的个人经验
    @XXX Mapping XXX指以下的各种请求方式以达到**一个URL+":动作名"**就覆盖了CRUD(大部分)
    put:用于修改,需要提供所有被硬需求的数据,(body内写数据)
    patch:用于修改,仅需要提供需要修改的数据(数据量不大的话还是用put)
    delete:用于删除命令,
    get:@PathValuable(“xxx”) 读路径变量
    post:@RequestBody(“xxx”) 读body数据
    PS:
    @RequestMapping
    @RequestMapping(method = RequestMethod.DELETE)
    两者表达含义一致
    以下为案例:
@RestController
@RequestMapping("/platform/dictionary")
@Slf4j
public class DictionaryController {
    @Autowired
    private IPlatformDictionaryService platformDictionaryService;
    //1.列出调用方法的地址
    //2.调用设计好的facade
    //3.使用BaseResultResponseUtil进行处理
    @GetMapping("/{typeCode}:listByTypeCode")
    public BaseResult<List<PlatformDictionaryResponse>> listByTypeCode(@PathVariable String typeCode) {
        return BaseResultResponseUtil.success(platformDictionaryService.listByTypeCode(typeCode));
    }
    @PostMapping("")
    public BaseResult<Boolean> createPlatformDictionary(@Valid @RequestBody CreatePlatformDictionaryRequest createPlatformDictionaryRequest){
        return BaseResultResponseUtil.success(platformDictionaryService.insert(createPlatformDictionaryRequest));
    }
    @PutMapping("/{dicId}:update")
    public BaseResult<Boolean> updatePlatformDictionary(@PathVariable("dicId")Long dicId,@Valid @RequestBody PlatformDictionaryRequest platformDictionaryRequest){
        return BaseResultResponseUtil.success(platformDictionaryService.update(dicId,platformDictionaryRequest));
    }

    @DeleteMapping("/{dicId}:delete")
    public BaseResult<Boolean> deletePlatformDictionary(@PathVariable("dicId")Long dicId){
        return BaseResultResponseUtil.success(platformDictionaryService.delete(dicId));
    }

}

  1. Spring自带的BeanUtils工具的copyProperties,会将Src的为null的字段也传给Target内同名字段,需要注意
  2. 数据库索引具体理解
    建索引,一般对象为where、order by 或者 group by 后面的字段。
    索引得以优化查询的原理:提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。
    但是使用索引的代价是需要维护索引,所以增改删的性能都会受到影响。
    总结:MySQL改善查询性能改善的最好方式,就是通过数据库中合理地使用索引。一般当数据量较大的时候,遇到sql查询性能问题,首先想到的应该是查询的sql时候使用了索引,如果使用了索引性能还是提高不大,就要检查索引是否使用正确,索引是否在sql查询中生效了!如果索引生效了,并且索引的使用也是合理的,最后sql性能还是不高,那就考虑重新优化sql语句
    ① 普通索引(单列索引)
    对于单列索引来说,比较适合建在重读度低的列上。
    ② 复合索引(组合索引)
    复合索引遵守“最左前缀”原则,即在查询条件中使用了复合索引的第一个字段,索引才会被使用。
    一个表中的数据在查询时有多个字段总是同时出现则这些字段就可以作为复合索引
    ③ 唯一索引
    与普通索引进行对比,唯一索引限制列的值必须唯一,但允许存在空值(只允许存在一条空值)。
    ④ 主键索引
    比起唯一索引,不能允许空值, 就是主键,建立主键后会自动为你建立主键索引,进行维护。
    ⑤ 全文索引(FULLTEXT)
    对于 like “%value%” 这样的方式,执行全表查询,这在数据量小的表,不存在性能问题,但是对于海量数据,全表扫描是非常可怕的事情,所以 like 进行模糊匹配性能很差。
    全文搜索在 MySQL 中是一个 FULLTEXT 类型索引。
    全文索引主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。fulltext索引配合match against操作使用,而不是一般的where语句加like。目前只有char、varchar,text 列上可以创建全文索引。
    小技巧:
    在数据量较大时候,先将数据放入一个没有全局索引的表中,然后再创建fulltext索引,要比先为一张表建立fulltext然后再将数据写入的速度快很多。
  3. MySQL数据库索引的创建,修改,删除
  • 创建
    unique|fulltext为可选参数,分别表示唯一索引、全文索引
    index和key为同义词,两者作用相同,用来指定创建索引
    col_name为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择
    index_name指定索引的名称,为可选参数,如果不指定,默认col_name为索引值
    length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度
    asc或desc指定升序或降序的索引值存储

create index 索引名 ON 表名(字段)
alter table 表名 add index 索引名(col_name)
create table ‘表名’(
‘id’ int(11) not null auto_increment,
… ,
Index 索引名 (字段)
)

  • 查询索引
    show indexes from ’表名‘;
  • 删除
    alter table ’表名‘ drop index ’索引名‘;
  1. < ? extends T >,< ? super T >
    对于src,需要让参数“严格”,用super,必须用下界及以上的数据类型输入。对于target,我们需要让参数“宽松”,用extends,必须能返回各种各样的数值,不能说只能返回Object这些基类的数据类型。

    一切都是为了规范,但是感觉整理起来还是有所问题,所以这一点参考为主。
  2. MySQL中Key与Index的区别
    Key即键值,是关系模型理论中的一部份,比如有主键(Primary Key),外键(Foreign Key)等,用于数据完整性检查与唯一性约束等。
    而Index则处于实现层面,比如可以对表个的任意列建立索引,那么当建立索引的列处于SQL语句中的Where条件中时,就可以得到快速的数据定 位,从而快速检索
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值