package cn.zhxu.bs.solon;
import cn.zhxu.bs.BeanSearcher;
import cn.zhxu.bs.FieldConvertor.BFieldConvertor;
import cn.zhxu.bs.MapSearcher;
import cn.zhxu.bs.ParamResolver.Configuration;
import cn.zhxu.bs.bean.DbField;
import cn.zhxu.bs.bean.InheritType;
import cn.zhxu.bs.bean.SearchBean;
import cn.zhxu.bs.bean.SortType;
import cn.zhxu.bs.convertor.*;
import cn.zhxu.bs.filter.*;
import cn.zhxu.bs.group.DefaultGroupResolver;
import cn.zhxu.bs.util.MapBuilder;
import cn.zhxu.bs.util.MapUtils;
import org.noear.solon.annotation.Inject;
import java.time.ZoneId;
import java.util.HashMap;
import java.util.Map;
@org.noear.solon.annotation.Configuration
@Inject(value = "${bean-searcher}", required = false)
public class BeanSearcherProperties {
/**
* 检索参数相关配置
*/
private final Params params = new Params();
/**
* SQL 相关配置
*/
private final Sql sql = new Sql();
/**
* 字段转换器相关配置
*/
private final FieldConvertor fieldConvertor = new FieldConvertor();
/**
* 是否使用 {@link MapSearcher } 检索器,默认为 true
*/
private boolean useMapSearcher = true;
/**
* 是否使用 {@link BeanSearcher } 检索器,默认为 true
*/
private boolean useBeanSearcher = true;
public Params getParams() {
return params;
}
public Sql getSql() {
return sql;
}
public FieldConvertor getFieldConvertor() {
return fieldConvertor;
}
public static class Params {
/**
* 排序字段参数名,默认为 `sort`,
* @see Configuration#sort(String)
*/
private String sort = "sort";
/**
* 排序方法参数名,默认为 `order`,
* @see Configuration#order(String)
*/
private String order = "order";
/**
* 排序参数名,默认为 `orderBy`,
* @see Configuration#orderBy(String)
*/
private String orderBy = "orderBy";
/**
* 字段参数名分隔符,默认为 `-`,
* @see Configuration#separator(String)
*/
private String separator = "-";
/**
* 是否忽略大小写字段参数名的后缀,默认为 `ic`,
* @see Configuration#ic(String)
*/
private String ignoreCaseKey = "ic";
/**
* 检索运算符参数名后缀,默认为 `op`,
* @see Configuration#op(String)
*/
private String operatorKey = "op";
/**
* 指定只 Select 某些字段的参数名,默认为 `onlySelect`,
* @see Configuration#onlySelect(String)
*/
private String onlySelect = "onlySelect";
/**
* 指定 Select 排除某些字段的参数名,默认为 `selectExclude`,
* @see Configuration#selectExclude(String)
*/
private String selectExclude = "selectExclude";
/**
* 参数非法时是否抛出异常
* @since v4.2.3
*/
private boolean failOnError = false;
/**
* 过滤器配置
*/
private final Filter filter = new Filter();
public static class Filter {
/**
* 是否启用检索参数数量限制,默认为 true,用于限制检索参数的个数,配合 {@link #maxParaMapSize } 参数一起使用
* @see SizeLimitParamFilter
* @since v4.3.0
*/
private boolean useSizeLimit = true;
/**
* 是否启用 数组参数值,默认为 true,用于配合 {@link MapUtils#flat(Map)} 与 {@link MapUtils#flatBuilder(Map)} 方法,来兼容数组参数值的用法。例如前端传参:age=20 & age=30 & age-op=bt
* 例如前端传参:age=20 & age=30 & age-op=bt
* @see ArrayValueParamFilter
* @since v4.3.0
*/
private boolean useArrayValue = true;
/**
* 是否启用 Json 数组参数值,默认为 false,用于简化前端传参,例如 age=[20,30] 替代 age-0=20 & age-1=30 <br>
* 但需要注意的是,即使该参数为 true, 也不一定能成功启用该过滤器,您必须还得添加 <a href="https://gitee.com/troyzhxu/xjsonkit">xjsonkit</a> 的 json 相关实现的依赖才可以,目前这些依赖有(你可以任选其一):
* <pre>
* implementation 'cn.zhxu:xjsonkit-fastjson:最新版本' // Fastjson 实现
* implementation 'cn.zhxu:xjsonkit-fastjson2:最新版本'// Fastjson2 实现
* implementation 'cn.zhxu:xjsonkit-gson:最新版本' // Gson 实现
* implementation 'cn.zhxu:xjsonkit-jackson:最新版本' // Jackson 实现
* implementation 'cn.zhxu:xjsonkit-snack3:最新版本' // Snack3 实现
* </pre>
* @see JsonArrayParamFilter
* @since v4.3.0
**/
private boolean useJsonArray = false;
/**
* 是否启用后缀运算符,默认为 false,用于简化前端传参,例如 age-gt=25 替代 age=25 & age-op=gt
* @see SuffixOpParamFilter
* @since v4.3.0
*/
private boolean useSuffixOp = false;
/**
* 检索参数的最大允许数量,用于风险控制,避免前端恶意传参生成过于复杂的 SQL
* @see SizeLimitParamFilter
*/
private int maxParaMapSize = 150;
public boolean isUseSizeLimit() {
return useSizeLimit;
}
public void setUseSizeLimit(boolean useSizeLimit) {
this.useSizeLimit = useSizeLimit;
}
public boolean isUseArrayValue() {
return useArrayValue;
}
public void setUseArrayValue(boolean useArrayValue) {
this.useArrayValue = useArrayValue;
}
public boolean isUseJsonArray() {
return useJsonArray;
}
public void setUseJsonArray(boolean useJsonArray) {
this.useJsonArray = useJsonArray;
}
public boolean isUseSuffixOp() {
return useSuffixOp;
}
public void setUseSuffixOp(boolean useSuffixOp) {
this.useSuffixOp = useSuffixOp;
}
public int getMaxParaMapSize() {
return maxParaMapSize;
}
public void setMaxParaMapSize(int maxParaMapSize) {
this.maxParaMapSize = maxParaMapSize;
}
}
/**
* 参数组相关配置
*/
private final Group group = new Group();
public static class Group {
/**
* 是否启用参数组功能,默认为 true
*/
private boolean enable = true;
/**
* 组表达式参数名,默认为 `gexpr`,
* @see Configuration#gexpr(String)
*/
private String exprName = "gexpr";
/**
* 用于控制参数构建器中使用 `groupExpr(..)` 方法指定的组表达式是否合并或覆盖前端参数传来的组表达式
* @see Configuration#gexprMerge(boolean)
*/
private boolean mergeable = true;
/**
* 组参数分隔符,默认为 `.`,
* @see Configuration#separator(String)
*/
private String separator = ".";
/**
* 组表达式缓存大小,默认为 50
*/
private int cacheSize = 50;
/**
* 表达式最大允许长度,风险控制,用于避免前端恶意传参生成过于复杂的 SQL
* @see DefaultGr
没有合适的资源?快使用搜索试试~ 我知道了~
基于Java和JavaScript的bean-searcher设计源码:实现复杂列表检索的一行代码ORM工具
共542个文件
java:280个
md:42个
js:28个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 46 浏览量
2024-09-26
09:49:47
上传
评论
收藏 16.98MB ZIP 举报
温馨提示
该项目是一款基于Java和JavaScript的Bean-Searcher设计源码,总文件量为468个,涵盖261个Java源文件、28个JavaScript文件、22个SQL文件等。Bean-Searcher是一款专注于高级查询的只读ORM工具,它天生支持联表操作,并能免DTO/VO转换,通过一行代码即可实现复杂的列表检索,极大简化了开发流程。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java和JavaScript的bean-searcher设计源码:实现复杂列表检索的一行代码ORM工具 (542个子文件)
gradlew.bat 3KB
gradlew.bat 3KB
gradlew.bat 3KB
gradlew.bat 3KB
gradlew.bat 3KB
gradlew.bat 3KB
gradlew.bat 3KB
grailsw.bat 2KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
style.css 4KB
index.css 477B
index.css 477B
index.css 477B
index.css 477B
index.css 477B
index.css 477B
index.css 477B
spring.factories 108B
.gitignore 444B
.gitignore 444B
.gitignore 444B
.gitignore 444B
.gitignore 444B
.gitignore 348B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 105B
.gitignore 94B
.gitignore 67B
build.gradle 4KB
build.gradle 1KB
build.gradle 678B
build.gradle 562B
build.gradle 559B
build.gradle 558B
build.gradle 548B
settings.gradle 37B
settings.gradle 35B
settings.gradle 34B
settings.gradle 33B
settings.gradle 33B
settings.gradle 32B
gradlew 8KB
gradlew 8KB
gradlew 8KB
gradlew 8KB
gradlew 8KB
gradlew 8KB
gradlew 6KB
grailsw 5KB
BootStrap.groovy 3KB
logback.groovy 1KB
EmployeeBean.groovy 462B
Application.groovy 291B
EmployeeController.groovy 266B
UrlMappings.groovy 215B
Employee.groovy 113B
Department.groovy 78B
resources.groovy 65B
index.html 6KB
index.html 6KB
index.html 6KB
index.html 6KB
index.html 6KB
index.html 6KB
index.html 6KB
org.springframework.boot.autoconfigure.AutoConfiguration.imports 45B
gradle-wrapper.jar 58KB
gradle-wrapper.jar 58KB
gradle-wrapper.jar 58KB
gradle-wrapper.jar 58KB
gradle-wrapper.jar 58KB
gradle-wrapper.jar 58KB
gradle-wrapper.jar 42KB
grails-wrapper.jar 5KB
BeanSearcherProperties.java 31KB
BeanSearcherProperties.java 31KB
GroupByTestCase.java 29KB
MetaResolverTestCase.java 29KB
BeanSearcherAutoConfiguration.java 22KB
BeanSearcherConfiguration.java 20KB
DefaultSqlResolver.java 17KB
DefaultParamResolver.java 16KB
DefaultDbMapping.java 13KB
SimpleSearchTestCase.java 13KB
MapBuilder.java 12KB
MapBuilderTestCase.java 12KB
Group.java 12KB
DefaultSqlExecutor.java 10KB
Builder.java 9KB
OrderByTestCase.java 8KB
DateFormatFieldConvertor.java 8KB
BaseSearcher.java 7KB
共 542 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
wjs2024
- 粉丝: 1772
- 资源: 5360
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功