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