1.json 请求:
2.总结数据的传输:
前端传来的数据命名最好的是驼峰式,这样便于后期其他人员看代码的时候更方便,
后台接收到前台数据的时候最好将其封装为一个类,这样不会丢数据,也便于维护,
然后将类传到后台sql语句中去。
返回值最好也是一个类,然后传到前台,不会丢失数据,也方便获取。
3.后端接收到前端的数据之后,虽然前端已经加了校验,但是为了防止有人通过抓包工具或者通过链接更改参数之后直接进入,后台也应该加一层校验,双重校验更保险;
4.返回前台的数据结果最好定一个统一的格式,比如定义一个类BaseResult 然后返回结果就在BaseResult 类的基础上添加数据即可;
5.其实不管是前台系统还是后台系统无非是增删改查CRUD这一套而已,只要把CRUD搞明白,其实就已经成功了一大半;
6.命名规范很重要,包名、方法名首字母小写后面跟着都是首字母大写,类名首字母要大写;
7.Sequence命名也应该一致,防止后期看不出来哪个是哪个,尤其是像oracle这样的不可以区分大小写的数据库,能简写的就用简写,能分类的要分类;
8.Sql语句归类
(1)查询sequence获取下一个值
select
USERSSEQUENCEGENERATOR.nextval
from
Dual
(2)如果传进来的是一个list,那么批量查询应该使用for循环【模糊查询+时间匹配,oracle上面的时间字段如果没有精度要求尽量使用date类型而不用timestamp】
<select id="selectUsersDoPagination" parameterType="java.lang.String" resultType="java.util.Map">
select
ID,
IDTYPE,
IDNUM,
USERNAME,
PHONENUM,
CREATETIME,
LASTMODIFIED
from (
<foreach collection="ids" item="item" separator="union all">
select
ID,
ID_TYPE IDTYPE,
ID_NUM IDNUM,
USER_NAME USERNAME,
PHONE_NUM PHONENUM,
to_char(CREATE_TIME,'yyyy-mm-dd hh24:mi:ss') CREATETIME,
to_char(LAST_MODIFIED,'yyyy-mm-dd hh24:mi:ss') LASTMODIFIED,
from ${item}
where 1=1
<!-- 支持模糊查询 -->
<if test="IDNUM != null and IDNUM != ''">
and ID_NUM like CONCAT(CONCAT('%','${IDNUM}'),'%')
</if>
<if test="USERNAME != null and USERNAME != ''">
and USER_NAME like CONCAT(CONCAT('%','${USERNAME}'),'%')
</if>
<if test="PHONENUM != null and PHONENUM != ''">
and PHONE_NUM like CONCAT(CONCAT('%','${PHONENUM}'),'%')
</if>
<if test="CREATETIME != null and CREATETIME != ''">
and TO_CHAR(CREATE_TIME,'YYYY-MM-DD HH24:MI:SS') between
'${CREATETIME}' and '${CREATETIME2}'
</if>
<if test="LASTMODIFIED != null and LASTMODIFIED != ''">
and TO_CHAR(LAST_MODIFIED,'YYYY-MM-DD HH24:MI:SS') between
'${LASTMODIFIED}' and '${LASTMODIFIED2}'
</if>
</foreach>
)
where 1=1
order by ID asc
</select>
9.如果是一类的东西的话,应该可以放在枚举里面
package com.smp.model.enums;
public enum BizType {
user_query_api("1","用户查询Api"),
user_login_api("2","用户登录Api");
;
private String code;
private String bizDescription;
private BizType(String code,String bizDescription){
this.code = code;
this.bizDescription = bizDescription;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getBizDescription() {
return bizDescription;
}
public void setBizDescription(String bizDescription) {
this.bizDescription = bizDescription;
}
}
(3)因为oracle数据库不区分大小写,所以字段可以使用_分割
10.打日志的时候应该按照日期区分来打日志,一般打两个日志,一个是全的日志,也就是所有的日志都在一起,一个异常错误日志;
11.一些可能会变动的参数不应该写死,而是应该写在配置文件里面,而且 配置文件应该写3份,一份是本机开发环境,一个是测试环境,一个是生产环境的;