我爱编程

项目进度总结

2018-04-08  本文已影响208人  简单coder

之前一段时间回家后,忙于写一个电商的项目.现在总结一下自己收获的知识.
首先将一下项目好用的工具:
1.FE助手
2.restlet client这两个都是chrome插件,翻个墙下载一下,一劳永逸,一个有很多前端调试的小工具,一个是分类管理模拟接口请求.




效果谁用谁知道!接下来讲项目正文:

首先是通用类工具:

1.const类:


定义一些常量字符串等的工具类

2.通用请求响应类:

ResponseCode
package com.mmall.common;

import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.map.annotate.JsonSerialize;

import java.io.Serializable;

/**
 * Created by syk on 2018/4/1.
 */
@JsonSerialize(include =  JsonSerialize.Inclusion.NON_NULL)
//保证序列化json的时候,如果是null的对象,key也会消失
public class ServerResponse<T> implements Serializable{
    private int status;
    private String msg;
    private T data;

    private ServerResponse(int status) {
        this.status = status;
    }

    private ServerResponse(int status, T data) {
        this.status = status;
        this.data = data;
    }

    private ServerResponse(int status, String msg, T data) {
        this.status = status;
        this.msg = msg;
        this.data =data;
    }

    private ServerResponse(int status, String msg) {
        this.status = status;
        this.msg = msg;
    }

    @JsonIgnore
    //使之不在json序列化结果当中
    public boolean isSuccess() {
        return this.status == ResponseCode.SUCCESS.getCode();
    }



    public int getStatus() {
        return status;
    }

    public String getMsg() {
        return msg;
    }

    public T getData() {
        return data;
    }

    public static <T> ServerResponse<T> createBySuccess(){
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode());
    }

    public static <T> ServerResponse<T> createBySuccessMessage(String msg){
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg);
    }

    public static <T> ServerResponse<T> createBySuccess(T data){
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),data);
    }

    public static <T> ServerResponse<T> createBySuccess(String msg,T data){
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg,data);
    }


    public static <T> ServerResponse<T> createByError(){
        return new ServerResponse<T>(ResponseCode.ERROR.getCode(),ResponseCode.ERROR.getDesc());
    }


    public static <T> ServerResponse<T> createByErrorMessage(String errorMessage){
        return new ServerResponse<T>(ResponseCode.ERROR.getCode(),errorMessage);
    }

    public static <T> ServerResponse<T> createByErrorCodeMessage(int errorCode,String errorMessage){
        return new ServerResponse<T>(errorCode,errorMessage);
    }
}

一个是枚举定义常用返回code,(枚举这个写法之前少用,这里需要稍微记一下)
一个是返回的响应类,即我们提交给前端的vo(vo这个概念是pojo(数据库对象)->bo(business obj业务数据对象)->vo(view obj页面展示对象)
这里需要提及的一句是:



这行代码一般还是加上的比较好,可以让null的键去掉



isSuccess这个值是用于java业务判断成功,挺实用的一个判断,但是不需要返回到前端,所以我们这里要把它忽略掉.
public class TokenCache {

    private static Logger logger = LoggerFactory.getLogger(TokenCache.class);

    public static final String TOKEN_PREFIX = "token_";

    //LRU算法
    private static LoadingCache<String,String> localCache = CacheBuilder.newBuilder().initialCapacity(1000).maximumSize(10000).expireAfterAccess(12, TimeUnit.HOURS)
            .build(new CacheLoader<String, String>() {
                //默认的数据加载实现,当调用get取值的时候,如果key没有对应的值,就调用这个方法进行加载.
                @Override
                public String load(String s) throws Exception {
                    return "null";
                }
            });

    public static void setKey(String key,String value){
        localCache.put(key,value);
    }

    public static String getKey(String key){
        String value = null;
        try {
            value = localCache.get(key);
            if("null".equals(value)){
                return null;
            }
            return value;
        }catch (Exception e){
            logger.error("localCache get error",e);
        }
        return null;
    }
}

tokenCache,我项目中使用的是guawa缓存,这里后续可以改成redis

通用类后续还会加上propertiesutil(用于读取properties文件的工具类等),还有一些常用的工具类会用三方的工具,比如下面等



很有用的isblank方法,与isempty稍微不同, equals方法免去原生的isequal需要第一个值不为空,还有很多很多好用的工具,这里不一一列举

2.mybatis三剑客

三剑客指
1.mybatis-generator:逆向工程工具
2.mybatis-plugin:自动查找mapper对象对象的xml文件的方法
3.mybatis-pagehelper:自动分页工具
我估计很多人只知道1和3,逆向工程和分页我这里不细说,很多教程有,plugin这个直接在idea插件中安装即可,很好用,强烈安利


自动跳转到xml中

3.业务需求

这个项目主要是为了沉淀我的java知识,毕竟一直只写一些小demo的话,不好沉淀sql,业务等熟练度.
这里讲下我以前忽略的点:

1.参数设置:

在controller,springmvc需要配置参数的时候用的@RequestParam



在mapper中则是使用的是:@Param


2.逻辑严整性:

这个是在业务当中不断的增长的,比如说权限判断等,最好使用排除递进的逻辑


后面过两天再增加点内容

上一篇下一篇

猜你喜欢

热点阅读