首先场景需求,有 个年级和班级表,第一个要求是根据模糊查询姓名,和年龄大小进行条件查询,接口层方法
其次是映射文件的配置
测试
b:choose when 分类
这种方式和java中choose循环结构原理是一样的,判断多种情况,只要修改一下映射文件即可
接口 类
映射文件
结果
c:使用foreach完成复杂 查询,有三种方式,
第一种:传入的参数为数组类型
测试类
第二种:传入list集合
测试:
第三种:根据Map集合
打印结果可以执行以下。
d一对多的两种实现方式
接口方法
映射文件配置
两种方式都能实现,打印效果
方案一打印效果
==>Preparing: select * from grade,student where grade.gradeId = student.stuGrade and gradeId = ? ============一条sql
==>Parameters: 1(Integer)
<== Columns: gradeId, gradeName, stuId, stuName, stuAge, stuGrade
<== Row: 1, S1297, 2, zhangyu, 19, 1
<== Row: 1, S1297, 3, zy, 20, 1
<== Row: 1, S1297, 4, zy, 21, 1
<== Total: 3
zhangyu
zy
zy
Process finished with exit code 0
方案二打印效果
==>Preparing: select * from grade where gradeId=? ==========第一条sql
==>Parameters: 1(Integer)
<== Columns: gradeId, gradeName
<== Row: 1, S1297
====>Preparing: select * from student where stuGrade = ? ==========第二条sql
====>Parameters: 1(Long)
<==== Columns: stuId, stuName, stuAge, stuGrade
<==== Row: 2, zhangyu, 19, 1
<==== Row: 3, zy, 20, 1
<==== Row: 4, zy, 21, 1
<==== Total: 3
<== Total: 1
zhangyu
zy
zy
Process finished with exit code 0
把你的条件添加到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条)