输出参数ResultType
1、输出参数为简单类型(8个基本+String)
2、输出参数为对象类型
3、输出参数为实体对象类型的集合:虽然输出类型为集合,但是resultType依然写集合的元素类型,eg:resultType="person"
4、输出参数类型为HashMap          --->一个HashMap对应一个人的多个元素(多个属性);查询所有人的属性:List<HashMap<String, Object>>
 
resultType和resultMap的区别:
resultType:实体类的属性、数据表的字段:类型、名字相同时
resultMap:实体类的属性、数据表的字段:类型、名字不同时
注意:当属性名和字段名不一致时,除了使用resultMap外还可以使用resultType+HashMap
resultType+HashMap方法:select 表的字段名 “类的属性名” from 
eg:<select id="queryPersonOutByHashMap" resultType="HashMap">
      select id "pid",name "pname" from person where id=1
   </select>
 
动语态sql:
动态查询
<select id="queryPersonbyNameorAgeWithSqlTag" parameterType="Person" resultType="Person">
        select id,name,age from person
        <where> <!-- <where>只能解决第一个<if>里面的and -->
            <if test="name!=null and name!=''">
                and name=#{name}        
            </if>
            <if test="age!=null and age!=0">
                and age=#{age}
            </if>
        </where>
    </select>
foreach:
<foreach>迭代的类型:数组、对象数组、集合、属性
查询语句:select * from person WHERE id in(1,2,3);
<!-- foreach查询   #{id}填补item separator指定分隔符-->
    <select id="queryPersonsbyIds" parameterType="grade" resultType="Person">
        select * from person
        <where>
            <if test="ids!=null and ids.size>0">
                <foreach collection="ids" open="id in (" close=")"
                item="id" separator=",">
                    #{id}
                </foreach>
            </if>
        </where>
    </select>
简单类型的array数组:
无论传递什么参数名,都用array代替。
<!-- 将多个元素放到数组里进行查询  必须是array代替数组-->
<select id="queryPersonsWithArray" parameterType="int[]" resultType="Person">
        select * from person
        <where>
            <if test="array!=null and array.length>0">
                <foreach collection="array" open="id in (" close=")"
                item="id" separator=",">
                    #{id}
                </foreach>
            </if>
        </where>
    </select>
list集合:
无论传递什么参数名,都用list代替。
<!-- 将多个元素放到list集合进行查询  必须是list-->
    <select id="queryPersonsWithList" parameterType="list" resultType="Person">
        select * from person
        <where>
            <if test="list!=null and list.size>0">
                <foreach collection="list" open="id in (" close=")"
                item="id" separator=",">
                    #{id}
                </foreach>
            </if>
        </where>
    </select>
对象数组:
<!-- 将多个元素放到对象数组里进行查询 ,必须是array ,parameterType="Object[]"-->
    <select id="queryPersonsWithObjectArray" parameterType="Object[]" resultType="Person">
        select * from person
        <where>
            <if test="array!=null and array.length>0">
                <foreach collection="array" open="id in (" close=")"
                item="person" separator=",">
                    #{person.id}
                </foreach>
            </if>
        </where>
    </select>
 
SQL片段:
    将相似功能代码提取出来,再进行引用。
步骤1、将代码提取出来;
<sql id="ObjectArrayIds">
    代码片段
</sql>
步骤2、用到时用id引用。
<include refid="ObjectArrayIds"></include>
注意:sql片段与引用处不在一个文件里的话refid前面加上namespace的值。

MyBatis3——输出参数ResultType、动语态sql的更多相关文章

  1. sql server使用sp_executesql返回拼接字符串里面的输出参数

    问题: 今天一同事请教博主,他拼接了一个语句,select表格形式数据,然后使用@@rowcount获取到行数. 但他又有这样特别的需求:想只获取行数而不返回表格数据结果,因为是while循环,不想返 ...

  2. mybatis入门系列二之输入与输出参数

    mybatis入门系列二之详解输入与输出参数   基础知识   mybatis规定mapp.xml中每一个SQL语句形式上只能有一个@parameterType和一个@resultType 1. 返回 ...

  3. 动态SQL的执行,注:exec sp_executesql 其实可以实现参数查询和输出参数的

    本文转自:http://www.cnblogs.com/hnsdwhl/archive/2011/07/23/2114730.html 当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态 ...

  4. Oracle中使用PL/SQL如何定义参数、参数赋值、输出参数和 if 判断

    1.pl/sql如何定义参数 declare --1)定义参数 -- ban_Id number; ban_Name ); 2.pl/sql如何参数赋值 --2)参数赋值-- ban_Id :; ba ...

  5. sql server 带输入输出参数的分页存储过程(效率最高)

    create procedure proc_page_withtopmax( @pageIndex int,--页索引 @pageSize int,--每页显示数 @pageCount int out ...

  6. sql 存储过程 输出参数 输入参数

    1.简单的存储过程 create procedure porc_name as select * from 表 go 调用时: exec proc_name 2. 带参数的存储过程 create pr ...

  7. JavaWeb_(Mybatis框架)输入和输出参数_五

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  8. MyBatis - 输入和输出参数

    基础知识 mybatis规定mapp.xml中每一个SQL语句形式上只能有一个@parameterType和一个@resultType 1. 返回值是一个对象的集合,@resultType中只能写该对 ...

  9. MySql.Data.dll 不支持输出参数

    insert INTO stu(name) VALUES('maimai'); set @ReturnValue=@@IDENTITY; string sql="insert INTO st ...

随机推荐

  1. linux一个例子驱动

    我们介绍的驱动称为 short (Simple Hardware Operations and Raw Tests). 所有它做 的是读和写几个 8-位 端口, 从你在加载时选择的开始. 缺省地, 它 ...

  2. 负margin的原理及应用

    在很多布局中我们经常能够见到类似于margin:-10px;的用法,我们对正值的用法早已熟悉的不能再熟悉了,可是这负值到底有何用呢?听我给你吹. 负margin——普通文档流 普通文档流元素(不浮动, ...

  3. 关于react的redux的知识点

    项目小的时候我们getState()进行管理数据,只有当数据庞大的时候我们采用Redux来进行管理. Redux: ①:它是专注于状态管理的库,和React是解耦的 ②:它是单向数据流,单一的状态 ③ ...

  4. 牛客多校第一场 B Inergratiion

    牛客多校第一场 B Inergratiion 传送门:https://ac.nowcoder.com/acm/contest/881/B 题意: 给你一个 [求值为多少 题解: 根据线代的知识 我们可 ...

  5. Google 浏览器设置打开超链接到新窗口标签页

    一.windows  按住Ctrl + 鼠标点击,在新窗口打开,停留在当前页面: 按住Ctrl + Shift + 鼠标点击,在新窗口打开,停留在新窗口: 登录Google账号,管理Google账号, ...

  6. 银川区域赛 H道路与航线(原题啊)

    按照<算法竞赛进阶指南>写的 哦对了,注意下最后判断,因为开始拓扑的时候,s可能不在里边,所以不一定等于INF,而是应该大于等于INF #include<cstring> #i ...

  7. Asp.net导入Excel并读取数据

    protected void Button1_Click(object sender, EventArgs e) { if (station.HasFile == false)//HasFile用来检 ...

  8. Java提供的JDBC标准- 六大步骤

    JDBC 1.//加载驱动 class.forname 2.//创建连接connection 3.//创建 管道流 statement或  preparestatement预处理4.//执行sql语句 ...

  9. 博帝飚速盘 16G

    设备制造商:  Patriot Memory当前协议  :  USB2.0输入电流  :  300mA 芯片制造商:  群联(Phison)芯片型号  :  PS2251-38闪存颗粒  :  美光( ...

  10. JDK1.8中的HashMap实现

    1.HashMap概述 在JDK1.8之前,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的节点都存储在一个链表里.但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通 ...