美文网首页我爱编程
项目进度总结

项目进度总结

作者: 简单coder | 来源:发表于2018-04-08 19:11 被阅读208次

    之前一段时间回家后,忙于写一个电商的项目.现在总结一下自己收获的知识.
    首先将一下项目好用的工具:
    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.逻辑严整性:

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


    后面过两天再增加点内容

    相关文章

      网友评论

        本文标题:项目进度总结

        本文链接:https://www.haomeiwen.com/subject/ywymhftx.html