# 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 ```