怎么做教育类型的网站,手机网站图片点击放大,银川网站建设公司哪家好,爱做的小说网站吗这一篇就开始是做一个项目了#xff0c;在项目里学习#xff0c;我主要记录在学习过程中遇到的问题#xff0c;以及一些知识点
Restful风格
一种软件架构风格
在REST风格的URL中#xff0c;通过四种请求方式#xff0c;来操作数据的增删改查。 GET #xff1a; 查询 …这一篇就开始是做一个项目了在项目里学习我主要记录在学习过程中遇到的问题以及一些知识点
Restful风格
一种软件架构风格
在REST风格的URL中通过四种请求方式来操作数据的增删改查。 GET 查询 POST 新增 PUT 修改 DELETE 删除
我们看到如果是基于REST风格定义URLURL将会更加简洁、更加规范、更加优雅。
RequestMapping注解
开发里经常用下面这种风格 GET方式GetMapping POST方式PostMapping PUT方式PutMapping DELETE方式DeleteMapping 数据封装
实体类属性名和数据库表查询返回的字段名一致mybatis会自动封装。如果实体类属性名和数据库表查询返回的字段名不一致不能自动封装。
手动结果映射、起别名、开启驼峰命名
手动结果映射
Results({Result(column create_time, property createTime),Result(column update_time, property updateTime)})
Select(select id, name, create_time, update_time from dept)
public ListDept findAll();
起别名
Select(select id, name, create_time createTime, update_time updateTime from dept)
public ListDept findAll();
开启驼峰命名(推荐)
如果字段名与属性名符合驼峰命名规则mybatis会自动通过驼峰命名规则映射。驼峰命名规则 abc_xyz abcXyz
在application.yml中做如下配置开启开关
mybatis:configuration:map-underscore-to-camel-case: true
实体类的属性与数据库表中的字段名严格遵守驼峰命名。
Nginx反向代理 location用于定义匹配特定uri请求的规则。 ^~ /api/表示精确匹配即只匹配以/api/开头的路径。 rewrite该指令用于重写匹配到的uri路径。 proxy_pass该指令用于代理转发它将匹配到的请求转发给位于后端的指令服务器。 简单参数接收 方案一通过原始的 HttpServletRequest 对象获取请求参数
/**
* 根据ID删除部门 - 简单参数接收: 方式一 (HttpServletRequest)
*/
DeleteMapping(/depts)
public Result delete(HttpServletRequest request){String idStr request.getParameter(id);int id Integer.parseInt(idStr);System.out.println(根据ID删除部门: id);return Result.success();
} 方案二通过Spring提供的 RequestParam 注解将请求参数绑定给方法形参
DeleteMapping(/depts)
public Result delete(RequestParam(id) Integer deptId){System.out.println(根据ID删除部门: deptId);return Result.success();
}
方案三如果请求参数名与形参变量名相同直接定义方法形参即可接收。省略RequestParam
DeleteMapping(/depts)
public Result delete(Integer id){System.out.println(根据ID删除部门: deptId);return Result.success();
}
JSON参数接收 JSON格式的参数通常会使用一个实体对象进行接收 。 规则JSON数据的键名与方法形参对象的属性名相同并需要使用RequestBody注解标识。
/*** 新增部门 - POST http://localhost:8080/depts 请求参数{name:研发部}*/
PostMapping(/depts)
public Result save(RequestBody Dept dept){System.out.println(新增部门, dept dept);deptService.save(dept);return Result.success();
} 路径参数接收
/depts/1/depts/2 这种在url中传递的参数我们称之为路径参数。
路径参数通过请求URL直接传递参数使用{…}来标识该路径参数需要使用 PathVariable获取路径参数。
/*** 根据ID查询 - GET http://localhost:8080/depts/1*/
GetMapping(/depts/{id})
public Result getById(PathVariable Integer id){System.out.println(根据ID查询, id id);Dept dept deptService.getById(id);return Result.success(dept);
}
日志
导入依赖----配置logback.xml----记录日志
Logback配置文件
如果需要输出日志到控制台。添加如下配置
!-- 控制台输出 --
appender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoder classch.qos.logback.classic.encoder.PatternLayoutEncoder!--格式化输出%d 表示日期%thread 表示线程名%-5level表示级别从左显示5个字符宽度%msg表示日志消息%n表示换行符 --pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n/pattern/encoder
/appender
如果需要输出日志到文件。添加如下配置
!-- 按照每天生成日志文件 --
appender nameFILE classch.qos.logback.core.rolling.RollingFileAppenderrollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 日志文件输出的文件名, %i表示序号 --FileNamePatternD:/tlias-%d{yyyy-MM-dd}-%i.log/FileNamePattern!-- 最多保留的历史日志文件数量 --MaxHistory30/MaxHistory!-- 最大文件大小超过这个大小会触发滚动到新文件默认为 10MB --maxFileSize10MB/maxFileSize/rollingPolicyencoder classch.qos.logback.classic.encoder.PatternLayoutEncoder!--格式化输出%d 表示日期%thread 表示线程名%-5level表示级别从左显示5个字符宽度%msg表示日志消息%n表示换行符 --pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n/pattern/encoder
/appender
日志开关配置 开启日志ALL取消日志OFF
!-- 日志输出级别 --
root levelALL!--输出到控制台--appender-ref refSTDOUT /!--输出到文件--appender-ref refFILE /
/root
logback日志级别 日志级别说明trace追踪记录程序运行轨迹 【使用很少】debug调试记录程序调试过程中的信息实际应用中一般将其视为最低级别 【使用较多】info记录一般信息描述程序运行的关键事件如网络连接、io操作 【使用较多】warn警告信息记录潜在有害的情况 【使用较多】error错误信息 【使用较多】 Slf4j
lombok中提供的Slf4j注解可以简化定义日志记录器这步操作。添加了该注解就相当于在类中定义了日志记录器就下面这句代码
private static Logger log LoggerFactory. getLogger(Xxx. class);