1.parameterType(输入类型)

1.1 传递简单类型

使用#{}占位符,或者${}进行sql拼接。

<select id="caseCountByQueryCaseVo" parameterType="String" resultType="Integer">
select count(1) total from  testcase where systemName like "%"#{systemName}"%" 
</select>

#{systemName}中的systemName可以随意取名,不过建议保持与前面字段名              一致。

systemName like '%${value}%'   //如果传入的是基本类型,那么${}中的变量名必须是value,如果传入的参数是pojo类型,那么         ${}中的变量名称必须是pojo中的属性名

 注意:使用拼接符有可能造成sql注入

1.2 传递pojo对象

#{}或者${}括号中的值为pojo的属性名称

<select id="caseCountByQueryCaseVo" parameterType="QueryCaseVo" resultType="Integer">
  select count(1) total from testcase where systemName like "%"#{systemName}"%"
​​​​​​​</select>

1.3  传递pojo包装对象

<select id="findTestCaseByPojoVo" parameterType="TestCaseVo" resultType="Integer">

   select count(1) total from testcase where systemName like "%"#{testcase.systemName}"%"

</select>

2 resultType(输出类型)

2.1 输出简单类型

<select id="findTestCaseByPojoVo" parameterType="TestCaseVo" resultType="Integer">

   select count(1) total from testcase where systemName like "%"#{testcase.systemName}"%"

</select>

2.2 输出pojo对象

<select id="findTestCaseById" parameterType="Integer" resultType="TestCase">

   select *  from testcase where caseId = #{caseId}

</select>

2.3 输出pojo列表

<select id="selectCaseListByCaseQueryVo" parameterType="QueryCaseVo"
resultType="Testcase">
select * from testcase
<where>
<if test="systemName != null and systemName != ''">
systemName like "%"#{systemName}"%"
</if>
<if test="caseId != null and caseId != ''">
and caseId like "%"#{caseId}"%"
</if>
<if test="caseName != null and caseName != ''">
and caseName like "%"#{caseName}"%"
</if>
<if test="isPass != null and isPass != ''">
and isPass = #{isPass}
</if>
</where>
limit #{startRow},#{size}
</select>

3.resultMap类型

resultType可以指定将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。

如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中。

resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list,实现一对一查询和一对多查询。

<!-- resultMap最终还是要将结果映射到pojo上,type就是指定映射到哪一个pojo -->
<!-- id:设置ResultMap的id -->
<resultMap type="order" id="orderResultMap">
<!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id -->
<!-- property:主键在pojo中的属性名 -->
<!-- column:主键在数据库中的列名 -->
<id property="id" column="id" /> <!-- 定义普通属性 -->
<result property="userId" column="user_id" />
<result property="number" column="number" />
<result property="createtime" column="createtime" />
<result property="note" column="note" />
</resultMap> <!-- 查询所有的订单数据 -->
<select id="queryOrderAll" resultMap="orderResultMap">
SELECT id, user_id,
number,
createtime, note FROM `order`
</select>

Mybatis框架基础入门(五)--输入映射和输出映射的更多相关文章

  1. Mybatis框架基础入门(三)--Mapper动态代理方式开发

    使用MyBatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper动态代理开发方法. 原始Dao开发方法需要程序员编写Dao接口和Dao实现类,此方式开发Dao,存在以下问题: Dao方 ...

  2. Mybatis框架基础入门(二)--架构简介

    mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文件,文件中配置了操作数据库的 ...

  3. Mybatis框架基础入门(一)--简介及优势

    一.什么是Mybatis 这里借用官网的一句话介绍什么是mybatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC ...

  4. Mybatis框架基础入门(四)--SqlMapConfig.xml配置文件简介

    SqlMapConfig.xml中配置的内容和顺序如下: properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器) o ...

  5. Mybatis框架基础入门(六)--动态sql

    主要是通过mybatis提供的各种标签方法实现动态拼接sql. 1.if标签 <!-- 根据条件查询用户 --> <select id="queryUserByWhere& ...

  6. Mybatis框架基础入门(七)--关联查询

    1.一对一查询 1.1 使用resultType接收查询结果 修改pojo类 public class OrderUser extends order { private String usernam ...

  7. (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射

    http://blog.csdn.net/yerenyuan_pku/article/details/71894172 在实际开发中我们不可能只是对单表进行操作,必然要操作多表,本文就来讲解多表操作中 ...

  8. MyBatis入门(二)—— 输入映射和输出映射、动态sql、关联查询

    一.输入映射和输出映射 1. parameterType(输入类型) 1.1 传递简单类型 <select id="getUserById" parameterType=&q ...

  9. 【mybatis深度历险系列】mybatis中的输入映射和输出映射

    在前面的博文中,小编介绍了mybatis的框架原理以及入门程序,还有mybatis中开发到的两种方法,原始开发dao的方法和mapper代理方法,今天博文,我们来继续学习mybatis中的相关知识,随 ...

随机推荐

  1. SSM整合时页面出现$ is not defined

    $ is not defined ,有以下几种可能: 1.没有导入jQuery的jar包 2.jQuery的jar包放进了WEB-INF里,jQuery的jar包最好放在WebContent下,跟WE ...

  2. 昨天面试被问到的 缓存淘汰算法FIFO、LRU、LFU及Java实现

    缓存淘汰算法 在高并发.高性能的质量要求不断提高时,我们首先会想到的就是利用缓存予以应对. 第一次请求时把计算好的结果存放在缓存中,下次遇到同样的请求时,把之前保存在缓存中的数据直接拿来使用. 但是, ...

  3. 年底获奖人太多?奖状可以用Smartbi电子表格这么做!

    又到一年年终时,你的年终奖到手了吗?奖金没领到,发个奖状压压惊 今天给大家分享年终奖相关的年终奖状的批量套打功能,保证你的奖状及时到手! 示例说明 现有多个人员的奖励需要通知,需要生成可翻页的奖状.并 ...

  4. Java8新特性系列-Lambda

    转载自:Java8新特性系列-Lambda – 微爱博客 Lambda Expressions in Java 8 Lambda 表达式是 Java 8 最流行的特性.它们将函数式编程概念引入 Jav ...

  5. 【基础知识】CPU指令周期

    完整执行一条指令所需要的时间 基本概念 指令周期,读取-执行周期(fetch-and-execute cycle)是指CPU要执行指令经过的步骤. 计算机之所以能自动地工作,是因为CPU能从存放程序的 ...

  6. .NET组件 vs. COM组件

    本文转载:https://www.cnblogs.com/larissa-0464/p/11095203.html 写在前面:我没有开发过COM组件的经验,只是在做文献综述的时候需要了解这方面的知识, ...

  7. 【C#表达式树 五】工厂模式创建表达式树节点

    常量 1.值常量  (p)=>100+88+p ParameterExpression par = Expression.Parameter(typeof(int), "p" ...

  8. openpyxl模块的读写使用及mongodb概念

    今日内容概要 openpyxl模块 MongoDB数据库 今日内容详细 openpyxl模块 # 下载 pip3 install openpyxl # 使用 '''openpyxl内部读写也是分离的 ...

  9. MySQL-常用的几种修改密码方法

    在MySQL中一般常规的给用户修改密码可以用到以下几种方法: 1.使用 mysqladmin命令修改密码 1 mysqladmin -u username -p password "newP ...

  10. 微信小程序清除缓冲

    1:wxml定义一个清除缓冲的按钮,并绑定触摸事件 <button bindtap="clear">清空缓冲</button> 2:wxjs定义方法: // ...