文章目录
- 1.所有的查询,分页,排序都可以封装成一个类来使用通过可以命名为AdvancedSearchVO,可以根据搜索的条例类SearchConditon,和Sort排序的查询出来然后进行分页。
- 2. SearchConditon类,这个里面可以写上你的表格里面的栏位。
- 3.排序的类Sort里面可以添加你需要进行排序的字段,怎么进行排序(正序/反序)的字段
- 4.创建实体类的VO去extends你的实体类,可以被继承,然后你可以在这个类上面继续添加你的需要的相关的字段。代码如下:
- 5.注意一下@RequestParam @RequestBody,@Responsbody的区别
- 6.高级搜索可以进行相关的一些条件的拼接,有利于sql的查询。*注意一下不可以使用String类进行拼接了*。code:
1.所有的查询,分页,排序都可以封装成一个类来使用通过可以命名为AdvancedSearchVO,可以根据搜索的条例类SearchConditon,和Sort排序的查询出来然后进行分页。
代码如下:
/**
* @author
*/
@Getter
@Setter
public class AdvancedSearchVO implements Serializable {
private Integer pageNum = 1; //当前页
private Integer pageSize = 10; //页大小
private List<SearchCondition> searchConditionList;//高级搜索
private List<Sort> orderList;//排序字段
}
2. SearchConditon类,这个里面可以写上你的表格里面的栏位。
/**
* 高级搜索 AdvancedSearch
* @author
*/
@Data
public class SearchCondition implements Serializable {
private static final long serialVersionUID = 46545654400288021L;
private String field;
private String condition;
private String searchValue;
private String relation;
}
3.排序的类Sort里面可以添加你需要进行排序的字段,怎么进行排序(正序/反序)的字段
/**
* 排序-- 条件
* @author
*/
@Data
public class Sort implements Serializable {
private static final long serialVersionUID = 44015654400289995L;
/**
* 字段名-对应的中文
*
*/
public String name;
/**
* 字段名--英文
*
*/
public String code;
/**
* 排序方式--正序或倒序
*
*/
public String toOrder;
}
4.创建实体类的VO去extends你的实体类,可以被继承,然后你可以在这个类上面继续添加你的需要的相关的字段。代码如下:
public class CLmCusNumUpholdVO extends ClmCusNumUphold {
/**
* 排序字段
*/
private String orderBy;
}
5.注意一下@RequestParam @RequestBody,@Responsbody的区别
6.高级搜索可以进行相关的一些条件的拼接,有利于sql的查询。注意一下不可以使用String类进行拼接了。code:
/**
* 高级搜索 service
* @author
*/
@Component
public class AdvancedSearchBiz {
public StringBuffer searchParamers(List<SearchCondition> searchConditionList) throws Exception {
//select * from table where 1=1 拼上 条件(关联符号在前)
StringBuffer searchParamer = new StringBuffer();
String space = " ";
for (SearchCondition searchCondition : searchConditionList ) {
String field = ConvertUtil.doLowerCase(searchCondition.getField());
String searchValue = searchCondition.getSearchValue();
String value =ConvertUtil.toConvert(searchValue);
String searchVal;
if(CheckUtils.isNumber(value) == false){
searchVal = "'"+value+"'";
}else{
searchVal = value;
}
String condition = searchCondition.getCondition();
String relation = searchCondition.getRelation();
// = 拼接的情况
if (condition.equals(SearchConditionUtil.EQUALS)) {
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(searchVal).
append(space);
}
// <> 拼接的情况
if (condition.equals(SearchConditionUtil.NOT_EQUALS)) {
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(searchVal).
append(space);
}
// > 拼接的情况
if (condition.equals(SearchConditionUtil.GREATER_THAN)) {
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(searchVal).
append(space);
}
// < 拼接的情况
if (condition.equals(SearchConditionUtil.LESS_THAN)) {
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(searchVal).
append(space);
}
// >= 拼接的情况
if (condition.equals(SearchConditionUtil.GREATER_EQUALS)) {
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(searchVal).
append(space);
}
// <= 拼接的情况
if (condition.equals(SearchConditionUtil.LESS_EQUALS)) {
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(searchVal).
append(space);
}
// in 拼接的情况
if (condition.equals(SearchConditionUtil.IN)) {
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append("(")
.append(space).append(CheckUtils.appendSymbol(value))
.append(space).append(") ");
}
// not in 拼接的情况
if (condition.equals(SearchConditionUtil.NOT_IN)) {
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append("(")
.append(space).append(CheckUtils.appendSymbol(value))
.append(space).append(") ");
}
// like 拼接的情况
if (condition.equals(SearchConditionUtil.LIKE)) {
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append("'%").append(value).append("%'").
append(space);
}
// not like 拼接的情况
if (condition.equals(SearchConditionUtil.NOT_LIKE)) {
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append("'%").append(value).append("%'").
append(space);
}
// between 拼接的情况 between... and...
// not between 拼接的情况
if (condition.equals(SearchConditionUtil.BETWEEN)) {
String[] contentUnits = value.split(",");
if (contentUnits.length != 2) {
throw new RuntimeException("搜索值栏位必须输入两个参数且用“,”隔开");
}
String leftContentUnit = contentUnits[0];
String rightContentUnit = contentUnits[1];
if(CheckUtils.isNumber(leftContentUnit) == false){
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition).append(space)
.append("'").append(leftContentUnit).append("'")
.append(space).append("and").append(space)
.append("'").append(rightContentUnit).append("' ");
}else {
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(leftContentUnit)
.append(space).append("and")
.append(space).append(rightContentUnit).
append(space);
}
}
if (condition.equals(SearchConditionUtil.NOT_BETWEEN)) {
String[] contentUnits = value.split(",");
if (contentUnits.length != 2) {
throw new RuntimeException("搜索值栏位必须输入两个参数且用“,”隔开");
}
String leftContentUnit = contentUnits[0];
String rightContentUnit = contentUnits[1];
if(CheckUtils.isNumber(leftContentUnit) == false){
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition).append(space)
.append("'").append(leftContentUnit).append("'")
.append(space).append("and").append(space)
.append("'").append(rightContentUnit).append("' ");
}else {
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(leftContentUnit)
.append(space).append("and")
.append(space).append(rightContentUnit).
append(space);
}
}
}
if(!CollectionUtils.isEmpty(searchConditionList) && StringUtils.isNotBlank(searchParamer)) {
searchParamer.insert(4, "(");
searchParamer.append(")");
}
return searchParamer;
}
}
创作不易,有帮助可以给博主点赞一个,I’ll find the correct direction,and do it again.