一些感悟

1.实体类

其实在小公司中实体类大致的可以分为两类:

  Vo:只是用来数据展示的,而展示的数据来源于两部分:

           1.前端传过来的数据

            2.数据库中查出来的数据;

  Do:是数据库映射数据的,必须和数据库中的字段保持一致,属性也必须报吃一致;

补充一点:

    关于方法的参数:

             1.参数是干什么的?从哪来的?

                   具体来说就是:参数是前端传过来的,还是从数据库中获取的,他们之间一定是有某种关系的,只有他们之间达到某一种关系,才造就了返回值的出现,而返回值的出现中,return是直接导致跳出方法的,return跳出方法,必须携带者返回值,要不然跳出也就没有任何的意义了,说到这里,可能会出现continue和break,但是如果在方法中应用,他们的返回值必须为void;

2.返回数据的格式:

  返回的数据应该使用统一的数据格式,包括分页的数据返回格式;

package com.weigu.xiaochuang.baseResult;


import com.terran4j.commons.api2doc.annotations.ApiComment;

/**
 * 统一的Json返回类
 */
public class Result<T> {
    @ApiComment(value = "code", sample = "200 205 4031 900 ")
    private String code;
    @ApiComment(value = "message", sample = "成功 操作失败 参数为空 token无效")
    private String message;
    @ApiComment(value = "data", sample = "数据")
    private T data;


    public Result() {
        this.setCode(ResultCodeEnum.SUCCESS);
        this.setMessage("成功!");
    }

    public Result(ResultCodeEnum code) {
        this.setCode(code);
        this.setMessage(code.msg());
    }

    public Result(ResultCodeEnum code, String message) {
        this.setCode(code);
        this.setMessage(message);
    }

    public Result(T t) {
        this();
        this.data = t;
    }


    public String getCode() {
        return code;
    }


    public void setCode(ResultCodeEnum code) {
        this.code = code.val();
        this.message = code.msg();
    }

    public String getMessage() {
        return message;
    }


    public void setMessage(String message) {
        this.message = message;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public void setCode(String code) {
        this.code = code;
    }


}
package com.weigu.xiaochuang.baseResult;

public enum ResultCodeEnum {
    //成功
    SUCCESS("200", "成功"),

    // 操作失败
    FAIL("205", "操作失败"),
    /**
     * 发生异常
     */
    EXCEPTION("401", "发生异常"),

    /**
     * 系统错误
     */
    SYS_ERROR("402", "系统错误"),

    /**
     * 参数错误
     */
    PARAMS_ERROR("403", "参数错误 "),
    //字段传入为空
    PARAMS_IS_NULL("4031", "参数为空"),
    //字段传入重复
    PARAMS_IS_REPEAT("4032", "参数值已存在"),
    INVALID_EXPIRE_TIME("4033", "兑换码已经过期"),
    CODE_IS_CHANGERD("4034", "兑换码已经兑换"),
    DAILY_SIGNED("5050", "已签到"),

    TOKEN_ERROR("900", "token无效");
    private String val;
    private String msg;

    public String val() {
        return val;
    }

    public String msg() {
        return msg;
    }

    ResultCodeEnum(String val, String msg) {
        this.val = val;
        this.msg = msg;
    }
}
package com.weigu.xiaochuang.baseResult;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import com.terran4j.commons.api2doc.annotations.ApiComment;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class PageResult<T> {
    @ApiComment(value = "当前页", sample = "1")
    private Integer currentPage;
    // 每页显示的总条数
    @ApiComment(value = "页大小", sample = "10")
    private Integer pageSize;
    // 总条数
    private Long totalNum;
    // 总页数
    private Integer totalPage;

    // 分页结果
    private List<T> items;

    public PageResult(PageInfo<T> pageInfo) {
        if (pageInfo != null) {
            setCurrentPage(pageInfo.getPageNum());
            setTotalPage(pageInfo.getPages());
            setTotalNum(pageInfo.getTotal());
            List<T> list = pageInfo.getList();
            setItems(list != null ? list : Collections.emptyList());
        } else {
            setCurrentPage(1);
            setTotalPage(0);
            setTotalNum(0L);
            setItems(Collections.emptyList());
        }

    }

    public PageResult(Page<T> page) {
        if (page != null) {
            setCurrentPage(page.getPageNum());
            setTotalPage(page.getPages());
            setTotalNum(page.getTotal());
            List<T> result = page.getResult();
            setItems(result != null ? result : Collections.emptyList());
        } else {
            setCurrentPage(1);
            setTotalPage(0);
            setTotalNum(0L);
            setItems(Collections.emptyList());
        }
    }

    public PageResult(List<T> list) {
        setItems(list);
    }

    public PageResult() {

    }


    public Integer getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(Integer currentPage) {
        this.currentPage = currentPage;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Long getTotalNum() {
        return totalNum;
    }

    public void setTotalNum(Long totalNum) {
        this.totalNum = totalNum;
    }

    public Integer getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(Integer totalPage) {
        this.totalPage = totalPage;
    }

    public List<T> getItems() {
        return items;
    }

    public void setItems(List<T> items) {
        this.items = items;
    }

}

 

3.异常的处理:

   业务异常:自定义业务异常的类,便于捕获;

   编译异常:

   这些都应该是统一的处理形式,

日志的级别处理:

server:
  port: 8081
spring:
  servlet:
    multipart:
      max-file-size: 100Mb
      max-request-size: 900Mb
  jpa:
    generate-ddl: false
    show-sql: true
    hibernate:
      ddl-auto: none
  http:
    encoding:
      enabled: true
      force: true
      charset: UTF-8
  datasource:
    name: mysql_test
    #-------------- start ----------------# (1)
    master:
      #基本属性--注意,这里的为【jdbcurl】-- 默认使用HikariPool作为数据库连接池
      jdbcurl: jdbc:mysql://localhost:3306/xiaochuang_new?useUnicode=true&characterEncoding=UTF-8&useSSL=false
      username: root
      password: weigu2018
      driver-class-name: com.mysql.jdbc.Driver
    slave:
      #基本属性--注意,这里为 【url】-- 使用 druid 作为数据库连接池
      url: jdbc:mysql://localhost:3306/xiaochuang_new?useUnicode=true&characterEncoding=UTF-8&useSSL=false
      username: root
      password: weigu2018
      driver-class-name: com.mysql.jdbc.Driver
    read: get,select,count,list,query,find
    write: add,create,update,delete,remove,insert
    #-------------- end ----------------#
    #druid相关配置
    druid:
      #监控统计拦截的filters
      filters: stat,wall
      #配置初始化大小/最小/最大
      initial-size: 1
      min-idle: 1
      max-active: 20
      #获取连接等待超时时间
      max-wait: 60000
      #间隔多久进行一次检测,检测需要关闭的空闲连接
      time-between-eviction-runs-millis: 60000
      #一个连接在池中最小生存的时间
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 'x'
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
      pool-prepared-statements: false
      max-pool-prepared-statement-per-connection-size: 20
    #redis配置
  redis:
    host: 127.0.0.1
    port: 6379
    jedis:
      pool:
        max-active: 8
        max-idle: 500
        max-wait: -1
        min-idle: 0
    database: 0
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    default-property-inclusion: non_null
#    #activeMQ配置
#    activemq:
#      broker-url: tcp://localhost:61616
#      user: admin
#      password: admin
#      pool:
#        enabled: true
#        max-connections: 50
#        expiry-timeout: 10000
#        idle-timeout: 30000

mapper:
  config-location: /mapper/*.xml
img:
  location: F:\xiaochuan\picture\
logging:
  level:
    com.weigu.xiaochuang.dao: trace
    root: INFO
    org.hibernate: INFO
    org.hibernate.type.descriptor.sql.BasicBinder: TRACE
    org.hibernate.type.descriptor.sql.BasicExtractor: TRACE
pay:
  pay-notify_url: http://47.99.62.122:8081/api/pay/pay_notify.do

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值