🎉 添加工具类的说明文档

This commit is contained in:
fuhouyin 2024-03-13 00:33:37 +08:00
parent 104d2f3847
commit 448c9c1c25
6 changed files with 204 additions and 0 deletions

View File

@ -0,0 +1,15 @@
### JAVA 手机号码格式验证,使用正则表达式
```java
public static boolean isValidPhoneNumber(String phoneNumber){
if((phoneNumber != null) && (!phoneNumber.isEmpty())){
return Pattern.matches("^1[3-9]d{9}$",phoneNumber);
}
return false;
}
```

View File

@ -0,0 +1,40 @@
### Java 日期格式化
#### 将birthday改为String类型
```java
import lombok.Data;
@Data
public class student {
private String birthday;
}
```
#### 直接把格式好的时间设置进去值得注意的是DateTimeFormatter是线程安全的。
```java
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class demo {
public static void main(String[] args) {
student student = new student();
String current = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
student.setBirthday(current);
System.out.println(student);
}
}
```
#### 效果student(birthday=2024-02-17 01:36:22)
### 扩展Spring框架中将Date的格式化方案
#### 在Spring框架如果你需要将一个日期格式从后端传递给前端你可以通过注解@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") 进行返回。这样就可以直接在对象中(new Date())了
```java
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
@Data
public class student {
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private String birthday;
}
```

View File

@ -0,0 +1,29 @@
### Java如何向数组里添加元素
#### 1.已有的数组datecolumn和list集合
```java
String[] datecolumn = {"Mon", "Tue", "Wed"};
List<String> list = new ArrayList<>();
list.add("Thu");
list.add("Fri");
list.add("Sat");
list.add("Sun");
```
#### 2.数组和集合add到titleList中
```java
List<String> titleList = new ArrayList<String>();
//将datecolum数组转换list并add到titleList中
titleList.addAll(Arrays.asList(datecolumn));
//将list添加到titleList中
titleList.addAll(list);
```
#### 3.titleList集合转换title数组
```java
String[] title = titleList.toArray(new String[titleList.size()]);
```
#### 4.遍历title数组
```java
for (String string : title) {
System.out.println(string);
}
```

View File

@ -0,0 +1,63 @@
### Mybatis (ParameterType) 如何传递多个不同类型的参数
#### 方法一不需要写parameterType参数。
#### 由于是多参数那么就不能使用parameterType 改用#index是第几个就用第几个的索引索引从0开始
```java
public List<XXXBean> getXXXBeanList(String xxId, String xxCode);
<select id="getXXXBeanList" resultType="XXBean">
select t.* from tableName where id = #{0} and name = #{1}
</select>
```
#### 方法二:基于注解(最简单)
#### 由于是多参数那么就不能使用parameterType 这里用@Param来指定哪一个
```java
public List<XXXBean> getXXXBeanList(@Param("id")String id, @Param("code")String code);
<select id="getXXXBeanList" resultType="XXBean">
select t.* from tableName where id = #{id} and name = #{code}
</select>
```
#### 方法三Map封装
#### 其中hashmap是mybatis自己配置好的直接使用就行。map中key的名字是那个就在#{}使用那个。
```java
public List<XXXBean> getXXXBeanList(HashMap map);
<select id="getXXXBeanList" parameterType="hashmap" resultType="XXBean">
select 字段... from XXX where id=#{xxId} code = #{xxCode}
</select>
```
#### 方法四List封装
#### 传递list和map在资源消耗上肯定远大于方法一和方法二
```java
public List<XXXBean> getXXXBeanList(List<String> list);
<select id="getXXXBeanList" resultType="XXBean">
select 字段... from XXX where id in
  <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
    #{item}
  </foreach>
</select>
```
```java
#{}
MyBatis处理 #{ } 占位符,使用的 JDBC 对象是 PreparedStatement 对象执行sql语句的效率更高。
使用 PreparedStatement 对象,能够避免 sql 注入使得sql语句的执行更加安全。
#{ } 常常作为列值使用位于sql语句中等号的右侧#{ } 位置的值与数据类型是相关的。
```
```java
${}
MyBatis处理 ${ } 占位符,使用的 JDBC 对象是 Statement 对象执行sql语句的效率相对于 #{ } 占位符要更低。
${ } 占位符的值,使用的是字符串连接的方式,有 sql 注入的风险,同时也存在代码安全的问题。
${ } 占位符中的数据是原模原样的,不会区分数据类型。
${ } 占位符常用作表名或列名,这里推荐在能保证数据安全的情况下使用 ${ }。
```

View File

@ -0,0 +1,32 @@
### RestTemple请求api接口发送formData形式
```java
RestTemplate restTemplate = new RestTemplate();
// 用于请求报错后,查看报错详情的(如果接口有报错详情的话)
restTemplate.setErrorHandler(new ResponseErrorHandler() {
@Override
public boolean hasError(ClientHttpResponse clientHttpResponse) throws IOException {
return false;
}
@Override
public void handleError(ClientHttpResponse clientHttpResponse) throws IOException {
}
});
// 用于formData请求方式
MultiValueMap<String,Object> params = new LinkedMultiValueMap<>();
params.add("key","value");
// MultiValueMap遇到需要填充list可参考下面做法
for (int i = 0; i < AttachmentList.size(); i++) {
params.add("AttachmentList["+i+"].fileName",AttachmentList.get(i).getFileName());
params.add("AttachmentList["+i+"].attachmentUrl",AttachmentList.get(i).getAttachmentUrl());
params.add("AttachmentList["+i+"].fileSize",AttachmentList.get(i).getFileSize());
}
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(params, headers);
```

View File

@ -0,0 +1,25 @@
### 常用Linux命令
```shell
#jar包启动
java -jar xxx.jar
nohup java -jar xxx.jar >server.log 2>$1 $
nohup java -jar -Xmx2g -Xms2g xxx.jar > logs/serverLog.log 2>&1 &
#查询所有端口
netstat -tuln
#根据进程号查询端口
netstat -nlp | grep pid
#根据端口号查进程号
netstat -nlp | grep 端口号
#查询进程pid
ps -ef | grep
netstat -anp | grep PID
#文件上传
rz
#文件下载
sz
#快速查询进程号
pgrep -f xxxx
```