MyBatis多条件查询看这一篇就够了

MyBatis多条件查询看这一篇就够了,第1张

a:使用if+where实现多条件查询

首先场景需求,有 个年级和班级表,第一个要求是根据模糊查询姓名,和年龄大小进行条件查询,接口层方法

其次是映射文件的配置

测试

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-->


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/7999602.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存