Mybatis框架基础入门(五)--输入映射和输出映射
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框架基础入门(五)--输入映射和输出映射的更多相关文章
- Mybatis框架基础入门(三)--Mapper动态代理方式开发
使用MyBatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper动态代理开发方法. 原始Dao开发方法需要程序员编写Dao接口和Dao实现类,此方式开发Dao,存在以下问题: Dao方 ...
- Mybatis框架基础入门(二)--架构简介
mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文件,文件中配置了操作数据库的 ...
- Mybatis框架基础入门(一)--简介及优势
一.什么是Mybatis 这里借用官网的一句话介绍什么是mybatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC ...
- Mybatis框架基础入门(四)--SqlMapConfig.xml配置文件简介
SqlMapConfig.xml中配置的内容和顺序如下: properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器) o ...
- Mybatis框架基础入门(六)--动态sql
主要是通过mybatis提供的各种标签方法实现动态拼接sql. 1.if标签 <!-- 根据条件查询用户 --> <select id="queryUserByWhere& ...
- Mybatis框架基础入门(七)--关联查询
1.一对一查询 1.1 使用resultType接收查询结果 修改pojo类 public class OrderUser extends order { private String usernam ...
- (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射
http://blog.csdn.net/yerenyuan_pku/article/details/71894172 在实际开发中我们不可能只是对单表进行操作,必然要操作多表,本文就来讲解多表操作中 ...
- MyBatis入门(二)—— 输入映射和输出映射、动态sql、关联查询
一.输入映射和输出映射 1. parameterType(输入类型) 1.1 传递简单类型 <select id="getUserById" parameterType=&q ...
- 【mybatis深度历险系列】mybatis中的输入映射和输出映射
在前面的博文中,小编介绍了mybatis的框架原理以及入门程序,还有mybatis中开发到的两种方法,原始开发dao的方法和mapper代理方法,今天博文,我们来继续学习mybatis中的相关知识,随 ...
随机推荐
- 攻防世界之Web_php_rce
题目: ========================================================================== 解题思路: 1.这题主要考查ThinkPH ...
- IPv6 OSPFv3路由协议测试——信而泰网络测试仪实操
关键词 IPv6; OSPFv3; OSPFv2. 前言:在网络部署中,动态路由协议是重要的组成部分.良好的路由协议,是保证网络可靠.稳定运行的基础.为了适应IPv6协议栈的变化,OSPFv3协议在保 ...
- 【C# 锁】 SpinLock锁 详细分析(包括内部代码)
OverView 同步基元分为用户模式和内核模式 用户模式:Iterlocked.Exchange(互锁).SpinLocked(自旋锁).易变构造(volatile关键字.volatile类.Thr ...
- [炼丹术]DeepLabv3+训练模型学习总结
DeepLabv3+训练模型学习总结 一.DeepLabs3+介绍 DeepLabv3是一种语义分割架构,它在DeepLabv2的基础上进行了一些修改.为了处理在多个尺度上分割对象的问题,设计了在级联 ...
- Qt:QListWidgetItem
0.说明 一个QListWidgetItem是QListWidget中的一项(一行). 每个Item都可以持有多部分的信息,并将它们在适当时候展示出来. 在构造一个Item时指明它所在的List Wi ...
- MongoDB创建普通账户与admin账户的配置方法
MongoDB数据库设置账户及权限的方法 1.如果MongoDB服务正在运行的情况下,需先停止该服务 在cmd(命令提示符)下输入net stop MongoDB,按下enter(回车键) 运行结果: ...
- k8s全方位监控 -prometheus实现短信告警接口编写(python)
1.prometheus短信告警接口实现(python)源码如下: import subprocess from flask import Flask from flask import reques ...
- 编写第一个GET、POST接口[renren-fast框架系列(1)]
配置好 renren-fast 脚手架,学习完 Spring MVC 架构后,我需要具体调试 renren-fast 的接口,比如要新增某个接口. 什么是前后端分离 运行 renren-fast 项目 ...
- Mybatis 多对一和一对多 学习总结04
1.Mybatis 组件的声明周期 声明周期是组件的重要问题,Mybatis也常用语多线程环境,错误使用会造成多线程并发问题,为正确编写Mybatis应用程序,我们要掌握Mybatis组件的声明周 ...
- linux 环境变量设置(临时 + 永久)
临时设置: 1.直接用export命令: #export PATH=$PATH:/home/xyz/Tesseract/bintesseract可执行文件目录 #export LD_LIBRARY_P ...