场景:基于Spring Boot使用Java调用http请求的6种方式。服务端发布一个POST请求和2个GET请求。使用6种方式实现的客户端都调用服务端发布的这3个方法。可以直观感受和比对6种http请求的客户端。
1、项目实体类属性不存入数据库排除方式
1.@Transient
该注解只适用于hibernate框架,在实体类(pojo)属性上使用、表示数据库表中没有这个字段就忽略;
2.@TableField
该注解只适用于mybatis-plus框架:
@TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的。
@TableField(exist = true):表示该属性为数据库表字段。
2、阿里EasyExcel大数据导入用法
pom文件依赖
1 | <!--阿里巴巴EasyExcel依赖--> |
导入(读)数据–第一步创建一个监听器ExcelDataListener.java继承AnalysisEventListener类
1 | // 1.编写一个监听器 ExcelDataListener.java继承AnalysisEventListener类 |
实体类
1 | public class RespLogInfo implements Serializable { |
用法
1 | package easyExcel; |
3、两个实体类互相copy
1 | BeanUtils.copyProperties(被copyEntity,targetEntity); |
4、实体Entity转Map
1 | Map<String,String> oMapper = new ObjectMapper().convertValue(clerk, HashMap.class); |
5、常量的定义
1 | public static final String MONDAY = "test"; |
6、SpringBoot使用RequestBodyAdvice进行统一参数处理
请求处理====在实际项目中 , 往往需要对请求参数做一些统一的操作 , 例如参数的过滤 , 字符的编码 , 第三方的解密等等 , Spring提供了RequestBodyAdvice一个全局的解决方案 , 免去了我们在Controller处理的繁琐 .RequestBodyAdvice仅对使用了@RqestBody注解的生效 , 因为它原理上还是AOP , 所以GET方法是不会操作的
1 | package com.xbz.common.web; |
响应处理=====实现ResponseBodyAdvice接口,其实是对加了@RestController(也就是@Controller+@ResponseBody)注解的处理器将要返回的值进行增强处理。
其实也就是采用了AOP的思想,对返回值进行一次修改。
1 | //此接口说明对添加了@Controller的类织入一个通知(增强功能) |
7、vue中将后台返回的数字转换成对应的文字
7.1、对于列表循环el-table-column采用如下方式:
1 | 第一种方案 |
7.2、对于详情或者修改页面采用如下方式:
1 | 在Vue中,created和mounted的区别是created用来初始化属性值,mounted用来操作属性值。下面小编举例讲解Vue中created和mounted的区别是什么。 |
8、实体类属性copy
1 | BeanUtils.copyProperties(source,target); |
9、el-table-column宽度自适应
1 | 如下这种方式会把每列宽度设置为10px |
10、el-table表格中单元格内容过多显示省略号
1 | el-table表格中内容超出单元格的宽度会自动换行,会使整个表格看起来显得不太美观, |
11、mybatis-plus的LambdaQueryWrapper自定义sql用法
1 | # 如果排序的字段需要先转换类型呢 |
12、mybatis-plus的@Select注解用法
1 | //没有查询条件 |
13、vue调用子组件作为弹窗时只执行一次created问题
解决办法:用v-if将子组件包裹起来,因为v-if=false时可以将子组件销毁掉,再次调用时重新渲染
补充知识:vue如何每次打开子组件弹窗都进行初始化 :visible.sync 与 v-if同时使用即可
14、Java字符串前后补零的几种方法
数字类型前补 0
1 | String.format("%08d", 123); // 00000123 |
字符串类型前补 0
1 | String.format("%8s", "abc").replace(" ", "0"); |
也可以先在前面补 8 位的 0,再截取:
1 | String str = "00000000" + "abc"; |
后补 0
对于后补 0,都可以使用一种方式来做,就是在后面加上 00000…,之后截取:
1 | (123 + "00000000").substring(0, 8); |
这种方式通用任何类型
15、springboot集成https
1 | 生成证书 |
输入后会提示输入密码,这个密码在下面配置文件有用到。
生成后,在家目录找到证书文件,复制到SpringBoot应用的src/main/resources下
1 | application.yml配置如下信息 |
此时启动SpringBoot应用,发现可以通过https访问了====快去打开浏览器访问试试😉。
想要http同时访问就看下面,否则跳过
1 | 在yml配置文件中,添加http端口号定义 |
16、项目防刷控制(自定义注解)
创建一个自定义注解
1 | package com.example.annotation; |
2.创建一个拦截器 (用于拦截请求,更新当前用户访问的次数,如果访问受限,则返回超时的状态码)
1 | package com.example.interceptor; |
3.注册拦截器
1 | package com.example.interceptor; |
4.OK , 下面我们就可以在需要进行现在访问次数的controller中的方法使用该注解了
1 |
|
17 string转json
1 | JSONObject json=new JSONObject(“”); |
18、SpringBoot项目业务操作日志记录
1、依赖配置
1 | <dependency> |
2、表结构设计
1 | create table if not exists bus_log( |
3、定义业务日志注解@BusLog,可以作用在控制器或其他业务类上,用于描述当前类的功能;也可以用于方法上,用于描述当前方法的作用
1 | /** * 业务日志注解 * 可以作用在控制器或其他业务类上,用于描述当前类的功能; * 也可以用于方法上,用于描述当前方法的作用; */ |
4、把业务操作日志注解BusLog标记在PersonController类和方法上
1 |
|
5、编写切面类BusLogAop,并使用@BusLog定义切入点,在环绕通知内执行过目标方法后,获取目标类、目标方法上的业务日志注解上的功能名称和功能描述, 把方法的参数报文写入到文件中,最后保存业务操作日志信息
1 |
|
结尾。
- 本文作者: hnyufushan
- 本文链接: https://fsvip.gitee.io/2023/07/09/项目实战问题笔记/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!