# sql-param-handler
**Repository Path**: coolmoon-toolbox/sql-param-handler
## Basic Information
- **Project Name**: sql-param-handler
- **Description**: 处理sql参数注入问题
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-03-29
- **Last Updated**: 2021-10-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### 目的
避免在 mybatis sql中繁琐地使用一些对象的方法, 例如枚举, like条件拼接,集合空判定
### 使用
* 引入依赖
```xml
top.coolmoon.toolbox
sql-param-handler
1.0-SNAPSHOT
```
* 再启动类标记注解启用
```java
@SpringBootApplication
@EnableParamDecorator
public class ProductApplication{
}
```
* 代码
```java
enum WeekDay {
Mon, Fri
}
/**
param data object
*/
@Data
public static class QueryParamObj {
public QueryParamObj() {
}
@Like(targetField = "keywordWildcard")
private String keyword = "关键字";
// wildcard: '%' + keyword + '%'
private String keywordWildcard;
@DateCondition(targetField = "startDateStr")
private Date startDate = new Date();
// startDate format: yyyy-MM-dd HH:mm:ss
private String startDateStr;
@TrimToNull
private String trim = " 123 ";
@EnumConvert(targetField = "weekDayStr")
private WeekDay weekDay = WeekDay.Mon;
// Mon
private String weekDayStr;
@EnumConvert(targetField = "weekDayInt", convertType = EnumConvertType.Ordinal)
private WeekDay weekDay2 = WeekDay.Fri;
// 1
private Integer weekDayInt;
@EmptyCollectionToNull
private List ids = Arrays.asList(1L, 2L);
@EmptyCollectionToNull
private List ids2 = Collections.emptyList();
@EmptyCollectionToNull
private int[] arr = new int[0];
@Converter(convertClass = TimestampToDateStrConverter.class, targetField = "startTime")
private String startTimestamp = System.currentTimeMillis() + "";
private String startTime;
}
/*
service need decode param object
*/
@Component
public class TestParamDecorator {
@Autowired
private ParamDecorator paramDecorate;
@Test
public void test() {
QueryParamObj queryParamObj = new QueryParamObj();
QueryParamObj r = paramDecorate.decorate(queryParamObj);
// r : decorated by handler
}
}
```
* mybatis sql
```xml
```