java开发中,如果涉及到判断配置表中某个字段是否包含某个值,如果包含,就往list中追加一个值怎么做呢,比如统计高一(5)班级里报名篮球的人员,因为一个人可以报名多个球类,所以一个人的兴趣那个字段可能有多个球类信息,假设1-篮球,2-足球
数据库存储的结果如下:
实体类如下:
@Data
@Entity
@TableName("INFO_TABLE")
public class InfoTable{
@TableField("NAME")
private String name;
@TableField("INTEREST")
private String interest;
@TableField("AGE")
private String age;
@TableField("DEL_FLAG")
private String delFlag;
@TableField("CLASS")
private String class;
}
Mapper如下:
public interface InfoMapper {
//0105代表高一(5)班级,DEL_FLAG等于1代表数据有效
@Select({" select name,interest from INFO_TABLE where class ='0105' and DEL_FLAG = '1' "})
List<InfoTable> getNameList();
}
具体代码实现如下:
@Slf4j
public class testDemo{
@Autowired InfoMapper infoMapper;
private
public String getInterestLists(String interest){
List<String> names = new ArrayList<>();
if(StringUtils.isNotBlank(interest)){
List<InfoTable> nameList = infoMapper.getNameList();
if(StringUtils.isNotBlank(nameList.toString())){
for (InfoTable :infoTableList : nameList){
String name = infoTableList.getName();
String interest = infoTableList.getInterest();
String[] interestList = StringUtils.split(interest,"|");
boolean interestFlag = Arrays.asList(interestList).contains(interest);
if(interestFlag){
names.add(name);
}
}
}else{
log.error("INFO_TABLE表中没有查询到记录");
}
}else{
log.error("interest值为空!");
}
//将nameList两侧的[]去掉,同时将逗号转为分号
String result = nameList.toString().split("\\[")[1].split("]")[0];
return (StringUtils.replace(result,",",";")).replace(" ","");
}
}
调用的时候,直接 String a = getInterestLists(“1”),就得到了所有报名篮球的名字,结果形如:张三;李四;王五
上述代码用到list转string,见本人另外一篇文章详述,原文链接:
https://blog.youkuaiyun.com/qq_34274094/article/details/140514601