实习-总结

部门目前做的一个项目是开发一个供内部测试人员使用的平台。使用的前端技术栈是react,后端技术栈是spring boot和spring cloud,并使用nginx做前后端的分离。

1. Bean的规范

service层的Bean和dao层的Bean经常不一样,为了规范:前者放在entity包下,后者放在dataObject包下。      

2. timestamp比date字段好用

数据库时间字段timestamp非常好用,可以自动设置创建时间和更新时间。mysql数据库timestamp可以对应Java中属性的long类型。可以设置默认值CURRENT_TIMESTAMP,意思是插入时间是null时,自动设置时间为当前时间。

下面第一个图是设置字段gmt_create,类型是timestamp,长度是0,默认值是CURRENT_TIMESTAMP,On Update Current_Timestamp这里不勾选,表示时间只会在创建时设置,记录更新时不改变值。所以至始至终这个字段都表示创建时的时间,适合用来表示某条记录的创建时间。

下面第二个图是设置字段gmt_modify,类型也是timestamp,表示的是记录的更新时间,和前一个图不同的地方是需要勾选On Update Current_TimeStamp。作用是创建和每次更新记录都会更新时间。

 

timestamp和long类型转换

create_time是timestamp类型,需要映射为mybatis的long类型:

             select unix_timestamp(create_time) as create_time from table

3. 善用BeanUtils.copyProperties(sourceBean,targetBean)

service层的Bean和dao层的Bean经常需要相互转换,这就需要属性值之间的复制,使用BeanUtils.copyProperties(sourceBean,targetBean)可以使代码看起来更加简洁。当然还有要注意的是,不同类型的属性之间不能转换,即使属性名相同也不行。

4. 善于Json和List之间的转换

List 转 Json(String):

import com.alibaba.fastjson.JSON;

String str = JSON.toJSONString(List<xxx>)  

Json(String) 转 List :

import com.alibaba.fastjson.JSONObjcet;

List<xxx> list = (List<EnvGroupConf>)JSONObject.parseArray(String,xxx.class)

为什么要Json和List之间的转换?

答:我们知道数据库一个字段可以存各种类型的数据,但是有一种不能存,那就是对象。如果我们想在一个字段存对象集合(对象还更简单),可以将对象集合转化为json字符串再存储,取数据的时候再将Json字符串转化为对象集合。当然如果不那么做也可以,如为该对象新建一张表,但是有点麻烦的是可能要设置外键进行联表查询。使用Json字符串就没这个问题了。

5. 善用swagger2

好处

  1. 前后端分离开发;
  2. API文档非常明确;
  3. 测试的时候不需要再使用URL输入浏览器的方式来访问Controller;
  4. 传统的输入URL的测试方式对于post请求的传参比较麻烦(当然,可以使用postman这样的浏览器插件);
  5. spring-boot与swagger的集成简单;

6. mysql插入数据并返回自增的id

//插入数据后返回自增id
@Insert("insert into env (product_id, env_conf_id,name, stage, creatorCN,creatorPY) values (#{productId}, "+
        "#{envConfId},#{name},#{stage}, #{creatorCN},#{creatorPY})")
@SelectKey(statement = "select last_insert_id()", keyProperty = "id", before =false, resultType = int.class)
int insert(EnvBean envBean);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值