这里有两个知识点:
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>可以了。
总结:还是自己的基础不扎实 赠予那些掉进坑里的人。
把你的条件添加到select语句后面,然后传下去,例如:
<!-- 旅行社详情 --><resultMap type="com.demo.teacher" id="teacherMap">
<id property="teacherId" column="teacher_id"/>
<result property="teacherName" column="teacher_name"/>
<!--注意下面这个声明,只有column-->
<result column="age"/>
<collection property="student" column="{teacherId=teacher_id,age=age}" ofType="java.util.Map" select="studentMap">
<id property="studentId" column="student_id" />
<result property="studentName" column="student_name"/>
<result property="studentAge" column="student_age"/>
</collection>
</resultMap>
<!--主-->
<select id="getTeacher" parameterType="java.util.Map" resultMap="teacherMap">
select
teacher_id,
teacher_name,
#{age} as age <!--把你的参数这样写-->
from
teachers
where
teacher_name = '大西瓜'
</select> <!--从-->
<select id="studentMap" parameterType="java.util.Map" resultType="java.util.Map">
select
student_id,
student_name,
student_age
from
students
where
teacher_id = #{teacherId}
and
age > #{age} <!--这两个参数是resultMap中column指定的key-->
</select>
<!--mybatis的一对多级联查询多方的参数只能是一方的column,所以你要想办法把你的参数做成column-->
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)