1.问题分析
原数据库
关联指标为数字串的形式,每个小数对应的是另一张表index的属性,我们想知道对应指标的名称,怎么在这里下面这种形式呢?
两种思路:
1.修改在后端处理,把后端关联指标部分修改成图二的字符串。
2.修改在前端处理,图一这张表数据传到后端,相关联表也传到后端,图一这种数字字符串用spilt方法相切形成数组,循环匹配index在数组里面的数据。
后端方法:
public List<FaReviewQuestion> selectFaReviewQuestionList(FaReviewQuestion faReviewQuestion){//查出faReviewQuestion条件查询得到的数据List<FaReviewQuestion> list=faReviewQuestionMapper.selectFaReviewQuestionList(faReviewQuestion);//遍历每一条数据for (FaReviewQuestion reviewQuestion : list) {//找到FaReviewQuestion对象的RuleIndex属性,并且使用split方法切割String indexs=reviewQuestion.getRuleIndex();String[] arrs=indexs.split(",");//定义一个字符串类型拼接字符串String newIndex="";//查询FaReviewRuleStudent表中index在数组中的数据使用的where index in (....) 动态sql或mybatisPlus,因为我这个表有特殊字符,所以用的动态sqlList<FaReviewRuleStudent> list1=faReviewRuleStudentMapper.selectUsersByIds(Arrays.asList(arrs));for (FaReviewRuleStudent faReviewRuleStudent : list1) {//拼接每个指标的名称newIndex=newIndex+" "+faReviewRuleStudent.getName()+" ";}//把指标中的数字串替换为名称字符串reviewQuestion.setRuleIndex(newIndex);}return list;}
动态sql:
<select id="selectUsersByIds" resultMap="FaReviewRuleStudentResult">SELECT * FROM fa_review_rule_studentWHERE `index` IN<foreach collection="list" item="id" open="(" separator="," close=")">#{id}</foreach></select>