首页 > 其他分享 >总结一段封闭开发的经历

总结一段封闭开发的经历

时间:2022-10-09 15:01:51浏览次数:51  
标签:总结 String Timestamp 代码 封闭 查询 list 一段 new


  因为工作的工作的特殊性,这段时间自己的电脑不能够连接外网,所以一些东西做了总结,不能分享出来。

  今天是八月十五,自己一个人在北京的一个小房子里,休息了个够。开始新的学习。

# #入参全部使用 DTO

 

对于对象的转换,很多字段的set get 应该考虑放在实体类中去写一个静态方法去转换。

比如说

OrderEntity 里边有五十个字段 ;requestDTO 有五十个字段,现在需要将requestDTO里边的五十个字段放到 orderEntity里边去。显然必定要有 五十个set get ,像这样没有人格业务逻辑性的代码不应该放在我们的逻辑代码里边,我们可以考虑在 OrderEntity 里边提供一个静态的方法,用来转换DTO对象,方法的入参就是 DTO对象,出参就是orderEntity对象。

 

# # 枚举的使用

 

对于一些状态码,我们最好是使用枚举,这样比注释更加语义化。维护起来也比较方便。

再来看一写例子:

public static enum orderPayStatus{

/**
* 待支付。状态码:1
*/
DAI_ZHI_FU("1"),
/**
* 已支付。状态码:2
*/
YI_ZHI_FU("2"),
/**
* 旅客取消。状态码:3
*/
LVKE_QU_XIAO("3"),
/**
* 系统取消状态码:4
*/
XITONG_QU_XIAO("4"),
/**
* 已出票。状态码:5
*/
YI_CHU_PIAO("5"),
/**
* 出票失败。状态码:6
*/
CHU_PIAO_SHI_BAI("6"),
/**
* 已退票。状态码:7
*/
YI_TUI_PIAO("7");

private String value;

orderPayStatus(String value) {
this.value = value;
}

public String getValue() {
return this.value;
}
}

m

# # 关于使用string类型时间的问题

 

因为看到的就文档上时间类型是String的,同时又要去查询这个String类型的时间的之前三十分钟的数据。比方说:201909121230123  这个string串代表的是2019年09月12号12点30分123毫秒 想要查询小于这个时间的所有数据。所以查询条件肯定是这个字段小于这个时间。

我的疑惑在于 String类型的时间串能不能去比较时间,以及怎么比。最后经过测试知道,string串在数据库中是支持比较大小的。可以作为查询的条件。String串就是一个一个字符去比较的。从前往后,一位小于则整个串就小于另外一个串。

 

# # 获取当前时间戳

 

Long nowTimeMillis = System.currentTimeMillis();

Timestamp  nowTime = new Timestamp(nowTimeMillis);

 

Timestamp 的 默认格式是:2019-09-10 09:30:08.949

# # 获取当前时间的前多少分钟,或者获取后N 分钟

Long nowTimeMillis = System.currentTimeMillis();

Timestamp  nowTime = new Timestamp(nowTimeMillis + N*60*1000);

 

# # JPA 的分页的问题

 

  之前没有考虑过分页的事,项目中突然用到了。

  自己有这样一个错误的理解。觉得分页也是查询出来所有的数据,然后分好页,将分好的全部页返回。

  从我要写的接口来说,首先要求分页,返回结果是一个list类型的对象。List里边放的是一条一条的数据。根据我错误的理解,然后就产生了这样的疑问。我先去分页,查询出来所有的数据,然后再从分页结果中取出来所有的数据再转换成list,我错误的理解,导致了这样的疑惑,为啥不直接做一个查询全部的操作,

  前边说了,上边的思考是建立在我错误的理解上的。真正的分页是这样来做的,首先你要传入页码,然后传入每页想要存放数据的条数。然后根据这个页数去查询数据,比方说有一百条数据,现在要查第三页的数据,每页存放十条数据。正确的做法是先查询总的数据条数,根据页码。和每页存放的数据条数,算出来要查询的数据是第二十一条到第三十条数据。

  再写一个分页查询的案例:

 

public List<KTPayFaultBriefTrainResult> queryRefundfailOrders(KTPayFaultBriefTrainDTO ktPayFaultBriefTrainDTO) {

int limitMin = ktPayFaultBriefTrainDTO.getLimitMin();

Integer pageNo = 0;

Integer singlePageNum = 0;



if (limitMin == 0){

//如果limitMin不传值,则设置默认值,默认为当前时间的前20分钟

limitMin = 20;

}

long timeMillis = System.currentTimeMillis();

Timestamp nowTime = new Timestamp(timeMillis - limitMin*60*1000);

String payTime = DateUtils.dateToString(nowTime, "yyyyMMddHHmmss");



List<KTAppendixFaultEntity> list = new ArrayList<KTAppendixFaultEntity>() ;

if(ktPayFaultBriefTrainDTO.getPageNo() == null || ktPayFaultBriefTrainDTO.getPageNo() == "0"){

list = ktAppendixFaultRepository.queryRefundfailOrders(payTime);

}else {

pageNo = Integer.parseInt( ktPayFaultBriefTrainDTO.getPageNo());

singlePageNum = Integer.parseInt(ktPayFaultBriefTrainDTO.getSinglePageNum());

Pageable pageable = new PageRequest(pageNo, singlePageNum, Sort.Direction.ASC, "appendixFaultId");



Page<KTAppendixFaultEntity> pageList = ktAppendixFaultRepository.queryRefundfailOrders(payTime,pageable);

list = pageList.getContent();

}





List<KTPayFaultBriefTrainResult> result = new ArrayList<>();

for (int i = 0; i <list.size() ; i++) {

//转换 KTAppendixFaultEntity —> KTPayFaultBriefTrainResult

KTPayFaultBriefTrainResult ktPayFaultBriefTrainResult = KTAppendixFaultEntity.convertToKTPayFaultBriefTrainResult(list.get(i));

ktPayFaultBriefTrainResult.setPageNo(pageNo.toString());

ktPayFaultBriefTrainResult.setSinglePageNum(singlePageNum.toString());

result.add(ktPayFaultBriefTrainResult);

}

return result;



}

# # SVN工具的使用

  从SVN上边拉项目,第一次拉取下边,需要稍微配置一下。需要注意以下几个问题。首先就是项目拉下来以后环境的问题。一这里我以Maven项目为例,肯定会出这样的问题,那就是拉下来的项目不能使用, 有JDK的原因,有Maven 的原因,其实开发前,最好是能够做到Maven仓库一致,这样不用自己去下载jar包,特别是使用的私服,有可能有点jar包并没有。关于这一块内容,我单独写一篇文章。​

 

  不说太多,重要的一点,在公司做团队开发,才出现的问题,比方说最常见的问题,就是冲突。所谓的冲突是在提交代码的时候发生的,冲突就是你修改了这块代码,别人也修改了这块代码。别人还比你先提交了,那么如果你提交之前不先更新一下代码的话,就一定会报冲突。有时候冲突就要将自己的代码备份,然后重新拉下来项目,然后再将自己的代码放进去,再重新提交。

  不产生冲突的最好的方案就是提交前一定要先从SVN上拉一下代码,然后等都更新下来了再去提交。

 

  另外,做团队开发,对于自己编写的代码,修改的代码,一定要先测试通过,不报错,再提交,不然就把别人坑了,因为你提交的错误代码,导致别人要等待,项目启动不了。

标签:总结,String,Timestamp,代码,封闭,查询,list,一段,new
From: https://blog.51cto.com/u_15812686/5740479

相关文章

  • 2022-2023-1 20221415 《计算机基础与程序设计》第六周学习总结
    2022-2023-120221415《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程<班级的链接>(2022-2023-1-计算机基础与程序设计)这个作业要求在哪......
  • 2022-2023-1 20221304 《计算机基础与程序设计》第六周学习总结
    2022-2023-120221304《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP这个作业......
  • 2020 应届生一篇迟到的总结
     时间是2020-1-8 这是一篇迟到的总结报告,对自己的总结,对自己的报告。 自己是无比的冷静,手都快要冻僵了。 我是一个大四的学生,大四一开始来北京工作,做12306. 接下来是......
  • 2022.10.6 总结
    C有一棵树,每次操作将一个点染成黑色,每次询问查询一个点最近的黑点有多远。有两种暴力:对于一个被修改为黑色的点,\(BFS\)给所有点更新。对于一个所求点,和所有黑色点求......
  • docker 学习总结
     不扯官方锁说的那一套东西。 就谈谈我自己的感受。 ## 会docker 相关的命令 ##最简单的操作 能开始操作docker   简单的一点的就是拉镜像,然后再运行容器。 ......
  • 以前文章总结一下事务的原理
     今晚学习了网易微专业的公开课,讲的是事务的相关的问题。这里写一篇文章记录一下。 ## 先看一下一个简单版的 spring 的事务原理全貌图  对于事务问题,之前都是一知......
  • spring 的相关的事务失效的问题总结
     这一个问题,真的是很有意思。之前不了解的时候觉得会用就行了。但是真的不知道里边这么多坑。不过这些坑都真的很有意思。它推着你去了解底层。推着你看源码,了解实现原理......
  • 【博学谷学习记录】超强总结,用心分享|Java基础分享-数据结构(数组、链表)
    目录1.数组2.链表2.1.链表简介2.2.链表分类2.2.1.单链表2.2.2.循环链表2.2.3.双向链表2.2.4.双向循环链表1.数组数组(Array) 是一种很常见的数据结构。......
  • 2022-10-08 本周纳斯达克三买三卖总结
    这一周总体就是个震荡趋势。做了周三和周五的空单。是按照,只要是中枢突破,出现三买三卖就开始做。日线来看,还在2个下降趋势线下面。 周三走势30分钟   5分钟图......
  • 10月8日内容总结——文件操作之文本模式和二进制模式、文件内光标的移动
    目录一、文件操作1、概念讲解2、通过代码打开文件的两种方式方式一:方法二:一些小知识点总结:二、文件的读写模式1、只读模式(r)2、只写模式(w)3、只追加模式(a)三、文件的操作模式......