美文网首页
08|第八课:动态SQL以及各种类型的输入参数

08|第八课:动态SQL以及各种类型的输入参数

作者: 木头amo | 来源:发表于2019-02-26 12:00 被阅读7次

    一、历史回顾

    (一)、动态SQL

    查询全部:

    select * from person;

    根据年龄查询:

    select * from person where age = #{age}

    根据姓名和年龄查询:

    select * from person where name = #{name} and #{age}

    看这些现象,前面的“select * from person”都一样,后面的内容可以动态拼接。

    二、动态SQL以及各种类型的输入参数

    (一)、动态SQL

    1、<where>标签

    老的方式:xxxMapper.xml配置文件:

    配置

    这种方式不是很好,建议使用下面配置的方式,如下图所示:

    这种where设置动态SQL方式

    <where>标签会自动处理第一个<if>标签中的and,但不会处理之后<if>中的and

    例:

    xxxMapper.xml配置:

    xxxMapper.xml配置

    建议采取这种方式:

    建议xxxMapper.xml配置方式

    xxxMapper接口:

    xxxMapper接口

    测试类:

    测试类

    2、<forEach>标签

    例:查询id为1、2、5的信息

    ids = {1,2,5}:select * from student where stuno in(1, 2, 5);

    <forEach>迭代的类型:数组、对象数组、集合、属性(Grade类:List<Integer> ids)

    (1)、属性(Grade类:List<Integer> ids):

    xxxMapper.xml设置:

    设置

    例:

    实体类:

    实体类

    xxxMapper.xml配置:

    xxxMapper.xml配置

    xxxMapper接口:

    xxxMapper接口

    测试类:

    测试类

    (2)、简单类型数组

    无论编写代码时,传递的是什么参数名,在mapper.xml中,数组的名称固定写法:array,具体xxxMapper.xml配置:

    xxxMapper.xml配置

    例:

    xxxMapper.xml配置:

    xxxMapper.xml配置

    xxxMapper接口:

    xxxMapper接口

    测试类:

    测试类

    (3)、集合

    无论编写代码时,传递的是什么参数名,在mapper.xml中,数组的名称固定写法:list,具体xxxMapper.xml配置:

    xxxMapper.xml配置

    例:

    xxxMapping.xml配置:

    xxxMapping.xml配置

    xxxMapping接口:

    xxxMapping接口

    测试类:

    测试类

    (3)、对象数组

    Person[] persons = {person1, person2, person3}; 使用这个数组里的各个对象的id。

    注意几点:

    a、parameterType="Object[]"

    b、里面使用的数组是array

    xxxMapper.xml配置:

    xxxMapper.xml配置

    例:

    xxxMapper.xml配置:

    xxxMapper.xml配置

    xxxMapper接口:

    xxxMapper接口

    测试类:

    测试类

    3、Mybatis:SQL片段。

    a、提取相同的SQL内容

    b、引用

    例:

    SQL片段

    如果SQL片段和引用处不在同一个mapper.xml中,则refid引用时,需要的值为:namespace + 这个sql的id。例:refid="com.test.entity.objectArrayCondition"

    相关文章

      网友评论

          本文标题:08|第八课:动态SQL以及各种类型的输入参数

          本文链接:https://www.haomeiwen.com/subject/rypdyqtx.html