记录在mapper文件中写sql语句时提示Tag name expected,找到原因是因为xml不识别<号需要用特定转义符来表示<号。
<select id="statisticalZeroPowerDays" resultMap="BaseResultMap" parameterType="java.lang.String">
select b.cons_name, a.cons_no, count(*) ZERO_POWER_DAYS
from dfb_dl a, dfb_c_cons b
where a.timerange like #{timerange}||'%'
and a.dl_value <= 0
and a.cons_no = b.cons_no
group by b.cons_name, a.cons_no
</select>
修改如下:
<select id="statisticalZeroPowerDays" resultMap="BaseResultMap" parameterType="java.lang.String">
select b.cons_name, a.cons_no, count(*) ZERO_POWER_DAYS
from dfb_dl a, dfb_c_cons b
where a.timerange like #{timerange}||'%'
and a.dl_value <= 0
and a.cons_no = b.cons_no
group by b.cons_name, a.cons_no
</select>
在 XML 中,一些字符拥有特殊的意义。
如果您把字符 “<” 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。
这样会产生 XML 错误:
为了避免这个错误,用实体引用来代替 “<” 字符,如下:
if salary <1000 then 需要改为if salary < 1000 then
在 XML 中,有 5 个预定义的实体引用:
注意:在 XML 中,只有字符 “<” 和 “&” 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。