发现问题
当在mapper中编写sql语句的时候会发现使用"<"符号会提示一个Tag name expected。这是因为xml文件中不识别"<"符号和“&”符号。防止与xml本身的元素命名混淆,导致无法解析的情况。
解决问题
第一种方式:我们可以用符号对应的转义符来代替。
sql语句修改后:
<select id="selectScoreInfo" resultType="com.tfjybj.physical.model.ScoreInfoModel"> SELECT ss.degree, ss.score, p.ratio FROM tp_project p LEFT JOIN tp_score_standard ss on ss.project_id=p.id WHERE ss.is_delete=0 AND p.is_delete=0 AND ss.project_id=#{projectId} AND ss.sex=#{sex} AND ss.grade_by_name=#{calcByGrade} AND ss.area_start < #{result} AND ss.area_end >= #{result} </select>
第二种方式:使用CDATA标记,以"<![CDATA[ "开始,以" ]]>" 结束,在两者之间嵌入不想被解析程序解析的原始数据,解析器不对CDATA区中的内容进行解析。
sql语句修改后:
<select id="selectScoreInfo" resultType="com.tfjybj.physical.model.ScoreInfoModel"> <![CDATA[ SELECT ss.degree, ss.score, p.ratio FROM tp_project p LEFT JOIN tp_score_standard ss on ss.project_id=p.id WHERE ss.is_delete=0 AND p.is_delete=0 AND ss.project_id=#{projectId} AND ss.sex=#{sex} AND ss.grade_by_name=#{calcByGrade} AND ss.area_start < #{result} AND ss.area_end >= #{result} ]]> </select>