基本类型与包装类型的使用
- 以Int类型为例:
1、除去需要进行计算的数据外都尽量使用包装类型(Integer) 因为Integer类型默认为null,而基本类型的默认值默认为0,在我们开发过程中,0在很多情况下是有实际意义的(例:status = 0 默认为成功)
2、我们只需呀判断Integer id == null ? 来判断id是否有值,而不是if(id != null && id != 0);
3、int 类型在需要计算类型的数据中优先考虑使用(例:金额),金额之类的数据一般会有加和操作,如果不判断null会报NullPointException,如果每次使用前都要判null代码写起来又很没有美感且费时费力
接口数据传输参数尽量使用一个String 类型的json本地java将json转化为java对象
1、如果为每个参数在接口定义一个接收的参数,一旦一个参数有变化,MVC结构从controller传递到server要改动很多地方,繁琐且易出错(如果一个接口需要十几个param,则服务端每个方法的形参都需要设置十几个,一旦一个更改则每个方法都需更改,如果使用json,只需要修改bean的某一个field即可)
2、get请求时踩的坑:浏览器会将null转化为“null”字符串,String类型的接收会由null变为非空,Integer回报参数数据类型不一致( The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).)
3、前端数据传来传去会把空出按("")转化为啥都没有
数据库批量插入
如果是通过Navicat 导出的.sql文件
批量导入数据的时候要注意
1、如果是要覆盖原数据表中数据,直接执行就行
2、如果要保留原数据表中数据,一定要记得删除.sql文件中的下面sql语句
DROP TABLE IF EXISTS `table_name`;
logger 和 返回值
1、logger打印统一使用英文,方便grep,快速定位问题
2、接口返回值中result 的msg尽量使用中文,方便业务端反馈问题
{
"status": 0,
"errorCode": "0",
"msg": "success",
"data": {
"count": 519
}
}
Spring 线程安全
1、Spring IOC的使用,默认都是singleton,所以在Soring使用多线程时尽量避免定义共享实例变量
2、秒杀:读的时候不加锁,写的时候加锁,且只需在更改那一刻加锁