这里有两个知识点:
1.<if>标签 test判断两个String类型的字段是否相等
可以是<if test=" 传过来的字段 ==‘固定的字段’.toString"></if>或者<if test='传过来的字段==“固定的字段”'></if>
2.foreach循环
item直接就代表了你循环中list 【10101,10102】中的值,直接取就能够判断,如上述中的图片
这里说下我的遇到的问题:
第一个想法是将sql后台拼接进来传入数值 sql="and sqrlx IS NOT NULL";理想的情况是and sqrlx IS NOT NULL直接拼接到sql条件的的后面,但是会给你自动加两个''给你sql阔起来传过去。即'and sqrlx IS NOT NULL' 这时候就发生错误了(可以试试将条件''起来)。
第二个想法是xml文件中判断直接写and sqrlx IS NOT NULL 这样应该没啥问题了,但是foreach循环的时候我记得是要#{item} 然后写成<if test="#{item}=='10101'.toString"></if>跑起项目一直报错,后来写成<if test="item=='10101'.toString"></if>可以了。
总结:还是自己的基础不扎实 赠予那些掉进坑里的人。
首先,不能使用if(rs.next()
==
true)
来进行逻辑判断。
rs.next()方法每调用一次就会使结果集的游标移动一行。第一次调用,游标在第一行,第二次就会指向第二行。
你描述的情况应该是结果集只有一行数据。第一次if
(rs.next()
==
true)
游标指向第一行,有数据,为真,进入IF。
while
(rs.next())调用的时候,结果集游标已经指向第二行了,而第二行中没有数据,所以不输出。
其实你的程序执行了。
也就是说,你上面的程序在结果集有多行数据的时候能够“正常”输出,但永远都比实际结果集少一行。你的第一行数据用来进行判断了。
明白了么?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)