2021年刚毕业入职一月总结

1、数据model层:

  • 注解@Data不能少

  • 拼写要仔细,日期date和data要区分

  • 写完代码记得格式化一下

  • request

    • swagger注解 - @ApiModelProperty(value = “XXX”),描述一定要清楚,遇到枚举的,要举例说清楚key-value的对应
    • 属性数据类型要细心
    • 属性名词与数据库匹配好
      · 时间无需前端传递,后台自行处理
      · 入参是否为空由注解进行判断,精确控制每一个参数是否需要
      · @NotNull: CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0)。
      · @NotEmpty: CharSequence, Collection, Map 和 Array 对象不能是 null 并且相关对象的 size 大于 0。
      · @NotBlank: String 不是 null 且去除两端空白字符后的长度(trimmed length)大于 0。
  • po
    · 为每个属性增加注释即可,注释要详细
    · 属性数据类型和数量要与数据库匹配
    · 时间是Date类型

  • vo
    · swagger注解 - @ApiModelProperty(value = “XXX”),描述一定要清楚,遇到枚举的,要举例说清楚key-value的对应
    · VO的类上记得加注解@ApiModel(“XXX”)
    · 需要传给前端展示的字段要涵盖全,对标记性的字段需要添加中文描述字段,例如trackFlagName轨迹名称,时间类型可改为String,格式化以后传递给前端
    2、controller层:

1、spring注解
· POST请求:@RequestBody @Valid
· GET请求:@RequestParam(value = “applyId”, required = false) String applyId
2、swagger注解:
· @ApiOperation(value = “XXX”, produces = Constants.CONTENT_TYPE_JSON)
· @ApiImplicitParams({ @ApiImplicitParam(paramType = “query”, name = “bus”, dataType = “Integer”, value = “XXX”,required = true)}) - 注意逗号
3、如果入参为request而且进行了字段注释,需要添加@Valid注解进行校验
4、复制粘贴的内容一定要核对清楚,标点符号,属性名和值都需要看清楚,核对清楚
5、要注意命名规范,例如返回如果是列表,命名要注意使用List作为尾缀
6、返回工具类:ResultUtils.buildSuccessResult()
7、抛异常的时候需要注意要有code码,方便前端匹配,throw new MSBizNormalException(“999999”, “入参异常!主键ID不能为空!”);
8、判断某个参数是否为空或者其他,尽量使用工具类
3、service层:

1、基础注解 @Service 、 @Slf4j
2、参数校验:StringUtils.isEmpty() 、 Objects.isNull() 等
3、对于某个业务场景来说能确定的字段,就确定,比如说添加轨迹,查询的自然要是需要添加的轨迹的,所以fieldConfigPO.setTrackFlag(1);
4、特定业务场景下,查询到空集合的时候,可以直接返回,提高代码可读性if(CollectionUtils.isEmpty(fieldConfigPOList)){ return new ArrayList<>();}
5、对于遍历,场景如下:
· 根据某个idList而言,可以在sql语句中使用in进行查询,提高查询效率,一下查询即可,不需要再代码中for循环id集合,查询很多次
6、对于时间的处理
· 返回给前端的时间:new date() => String格式化date ------ DateUtils.format(PO.getTime(),DateUtils.FORMAT_TIME)
7、类型转换工具类:BeanUtils.copyProperties(PO,VO);
8、for循环添加对象到List集合中的时候,每一次循环,需要new一个新的对象,进行添加
9、关于continue、break、return三者的区别
· 在for循环中,使用continue则是直接进入到下个循环
· 使用break则是跳出循环,执行之后的代码
· 使用return则是跳出这个方法
10、在debug的时候,一定要细心,找准方向,不要做无谓的挣扎,不要想当然
11、对象在使用的时候再new 新的
12、打印日志的时候要区分是错误日志log.error还是提示日志log.info
13、未作待办事项可以输入代码:to do,可以再待办列表找到要干的事项
14、编写service方法的时候,要考虑代码的兼容性,实际场景化
15、分页查询
· 设置分页顺序 PageHelper.startPage(PageNo, PageSize);
· 得到分页返回数据的基本信息 PageInfo pageInfo = new PageInfo(POList);
· 组装返回信息 PageVO page = new PageVO<>();
page.setRows(VOList); //获取返回列表
page.setPageTotal(pageInfo.getPages()); //获得总页数
page.setRowTotal((int)pageInfo.getTotal()); //获得总数
page.setPageSize(PageSize); //获得每页
16、枚举类的编写
17、try_catch的应用:写代码的时候,要注意思考哪些地方会出现异常,出现异常是捕获还是抛出,抛出会不会影响其他流程的进行,try_catch的范围多大合适
18、流的实际使用
· List fieldKeys =
fieldConfigPOList.stream().map(FieldConfigPO::getFieldKey).collect(Collectors.toList());
· List custIdList =
tmp.stream().filter(vo -> vo != null && vo.getCustDetail() != null&&!StringUtils.isBlank(vo.getCustDetail().getLoanCustId()))
.map(CustInfoVo::getCustDetail).map(CustDetailVo::getLoanCustId).collect(Collectors.toList());
19、对于不熟悉的方法,如果是通过百度找到的,也要本地运行一下,看是否有问题,不能盲目的使用
20、对于不熟悉的方法或者是其他,要认清楚返回值的类型,以及我需要什么返回值,如何进行转换才可以得到我想要的返回值,才不影响数据原来表达的意思
4、dao和mapper.xml层:

1、在入参既有列表又有集合的时候,如何想要在mapper.xml中使用in遍历列表
· @Param(“applyId”) String applyId, @Param(“businessType”) Integer businessType,@Param(“fieldKeys”) List fieldKeys)
· and field_key in
#{item}

2、在入参中只有一个list集合的时候
· #{item}
3、对于更新操作,设计好表结构以后,可以不用考虑时间的更新,可以自动更新
4、sql语句中,直接使用now()来表示时间
7 、数据库建表:

1、建表规范
· 确定表的用途
· 命名
· 字段类型和长度的确定,建议:id一般为bigint(20)、其余的varchar的建议25个字节,原因之类的限制在200个字节,对ture or false这类的,使用tinyint(1)即可
· 确定该字段是否可为空
· 字段的注释(COMMENT ‘主键id’)和表的注释ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT=‘字段配置表’;
2、建立索引 频繁查询的字段、区分度、是否为空
3、常用字段固定写法
enable_flag TINYINT(1) NOT NULL DEFAULT ‘1’ COMMENT ‘有效标志 0表示删除,1表示使用中’,
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间 ',
update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’,
create_by varchar(32) NOT NULL DEFAULT ‘0’ COMMENT ‘创建人 工号_姓名’,
update_by varchar(32) NOT NULL DEFAULT ‘0’ COMMENT ‘修改人’
4、sql语句的拼接 concat(concat(LEFT(cust_mobile,3), ‘****’), RIGHT(cust_mobile, 4)) AS cust_mobile

彩蛋:

1、关于Lombok注释
@Null 被注释的元素必须为null
@NotNull 被注释的元素不能为null
@AssertTrue 被注释的元素必须为true
@AssertFalse 被注释的元素必须为false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max,min) 被注释的元素的大小必须在指定的范围内。
@Digits(integer,fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(value) 被注释的元素必须符合指定的正则表达式。
@Email 被注释的元素必须是电子邮件地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串必须非空
@Range 被注释的元素必须在合适的范围内

2、建表语句
CREATE TABLE field_config(
id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT ‘主键id’ ,
business_type INT(11) NOT NULL DEFAULT ‘1’ COMMENT ‘业务类型 (1个贷 2组贷等)’,
field_key VARCHAR(25) NOT NULL COMMENT ‘字段key’,
field_name VARCHAR(25) NOT NULL COMMENT ‘字段名称’ ,
field_desc VARCHAR(200) COMMENT ‘对该字段的描述’ ,
track_flag TINYINT(1) NOT NULL DEFAULT ‘1’ COMMENT ‘轨迹 0不添加轨迹 1添加轨迹’ ,

enable_flag TINYINT(1) NOT NULL DEFAULT '1' COMMENT '有效标志 0表示删除,1表示使用中',
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间 ',
update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
create_by varchar(32) NOT NULL DEFAULT '0' COMMENT '创建人 工号_姓名',
update_by varchar(32) NOT NULL DEFAULT '0' COMMENT '修改人',
PRIMARY KEY (id),
    KEY idx_field_key (field_key)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT=‘字段配置表’;

修改表结构:
alter table member_special_list add reason VARCHAR(200) not null;

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值