发现问题
当我们在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>