框架学习系列 mybatis mapper映射文件之输出映射
1: mapper映射文件输出映射(输入类型)
2:resultType的使用
3:resultMap的使用
3:总结&下节预告
本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第十二篇 mapper映射文件之输出映射
声明:本文系凯哥Java(www.kaigejava.com)原创,未经允许,禁止转载!
一: mapper映射文件输出映射(输入类型)
1.1:mapper.xml文件中那个是输出映射(输出类型)?
mapper映射文件输出映射(输入类型)
上图中的resultType就是输出映射,还有一种是resultMap
二:resultType的使用
2.1:resultType使用要求
①:使用resultType进行结果映射时候,需要查询出的列名和映射的对象的属性名称一致,才能映射成功
②:如果查询的列名和对象的属性名全部不一致,那么映射的对象为空
③:如果查询的列名和对象的属性名有一个一致,那么映射的对象不为空,但是只有映射成功的那一个属性才有值
④:如果查询的sql的列名有别名,那么这个别名就是和属性映射的列名
输出类型有哪些?
简单类型、pojo对象和pojo列表、
2.2:简单类型的使用
注意:对简单类型的结果映射也是有要求的,查询的列必须是一列,才能映射为简单类型的
2.2.1:需求
在上节复杂pojo对象使用的时候:想模糊查询用户是凯哥的都有哪些?这个需求修改为,查询符合条件的用户总数是多少?
凯哥喜欢先给出结果,在详细解说。咱就先来看结果,小二,上图啦~
2.2.2:映射文件
2.2.3:mapper接口代码:
2.2.4:测试代码:
2.2.5:运行结果:
2.3:pojo对象和pojo列表
可以参考入门程序之根据id查询用户信息和根据用户名模糊查询用户列表。这里就不详细解说。
2.3.1:pojo对象。(根据id查询用户)
2.3.2:根据用户名模糊查询用户列表
需要注意的:resultType:输出结果所映射的java类型(也就是单条结果所以对应的java类型)
单条结果数据的数据类型。
三:resultMap的使用
3.1:使用要求
使用resultMap进行结果映射的时候,不需要查询的列名和映射的属性名必须一致,但是需要声明一个resultMap,来对列名和属性名进行映射
3.2:需求:
根据id全字段映射。sql语句如下:
SELECT id , username,birthday,sex address FROM USER WHERE id = 28
3.3:user-mapper.xml映射文件:
说明:
resultMpa:标明开始声明一个resultMap
type:查询后返回当个pojo对象的类型(全类名或是别名)
id:resultMap唯一标识
id:标明是主键的.主键使用该属性
column:数据库中对应的列名
property:对应的属性名
javaType:对应Java类型
result:非主键属性
3.4:mapper接口类代码:
3.5:测试类:
3.6:运行结果:
三:总结
通过本文学习,我们知道mapper输出映射有两种方式
resultType和resultMap两种
使用resultType怎么返回简单类型,使用简单类型时候需要注意什么。怎么返回pojo类型和pojo列表
resulMap的使用中resultMap都有哪些属性?怎么使用resultMap
下节预告:
在resultMap 中type和resultType的时候,每次都写全路径是不是很麻烦呢?
四:parameterType
在mybatis映射接口的配置中,有select,insert,update,delete等元素都提到了parameterType的用法,parameterType为输入参数,在配置的时候,配置相应的输入参数类型即可。parameterType有基本数据类型和复杂的数据类型配置。
1.基本数据类型,如输入参数只有一个,其数据类型可以是基本的数据类型,也可以是自己定的类类型。包括int,String,Integer,Date,如下:
(1)根据id进行相应的删除:<delete id="deleteById" parameterType="Integer">
(2)添加员工:<insert id="addEmp" parameterType="com.pojo.Employee">
2.复杂数据类型:包含java实体类,map。
配置如:
<select id="selectTeacher" parameterType="Map" resultType="com.myapp.domain.Teacher">
select * from Teacher where c_id=#{id} and sex=#{sex}
</select>
java代码如下:
Map<String,String> map=new HasMap<String,String>();
map.put("id","2");
map.put("sex","男");
List<Teacher> tList = teacherMapper.selectTeacher(map);
for (Teacher entityTemp : tList) {
System.out.println(entityTemp.toString()); }
另外MyBatis还提供了一个使用注解来参入多个参数的方式。这种方式需要在接口的参数上添加@Param注解
/**
* 此处要注意的是,由于该方法需要传入多个参数,在进行Mybatis配置时,
* 没有办法同时配置多个参数,另外MyBatis还提供了一个使用注解来参入
* 多个参数的方式。这种方式需要在接口的参数上添加@Param注解。。
* 注意,以下两种写法是完全相同的。但使用的时候要使用第一种类型
*/
User login(@Param(value="name")String name,@Param(value="password")String password );
// User login(String name,String password);
配置如下:
<select id="login" resultType="com.pojo.User">
select * from us where name=#{name} and password=#{password}
</select>
框架学习系列 mybatis mapper映射文件之输出映射的更多相关文章
- 笔记:MyBatis Mapper XML文件详解 - 映射和参数
MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% ...
- mybatis mapper xml文件的导入方式和查询方式
mybatis mapper xml文件的导入方式和查询方式 ssm框架 Mybatis mapper与SQLSession的关系 每个基于MyBatis的应用都是以一个SqlSessionFact ...
- Python学习系列(五)(文件操作及其字典)
Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...
- MyBatis Mapper.xml文件中 $和#的区别
MyBatis Mapper.xml文件中 $和#的区别 网上有很多,总之,简略的写一下,作为备忘.例子中假设参数名为 paramName,类型为 VARCHAR . 1.优先使用#{paramN ...
- mybatis mapper xml文件配置resultmap时,id行和result行有什么区别?
mybatis mapper xml文件配置resultmap时,id行和result行有什么区别? <resultMap id = "CashInvoiceMap" typ ...
- Html5 学习系列(四)文件操作API
原文:Html5 学习系列(四)文件操作API 引言 在之前我们操作本地文件都是使用flash.silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很难进行跨平台.或者跨 ...
- SQL映射文件-----MySQL关系映射【1对1,1对多,多对多】
SSM框架下,mapper.xml 中 association 标签和 collection 标签的使用 当数据库中表与表之间有关联时,在对数据库进行操作时,就不只是针对某一张表了,需要联表查询 My ...
- Java-MyBatis-MyBatis3-XML映射文件:结果映射
ylbtech-Java-MyBatis-MyBatis3-XML映射文件:结果映射 1.返回顶部 1. 结果映射 resultMap 元素是 MyBatis 中最重要最强大的元素.它可以让你从 90 ...
- XML映射文件中关系映射
映射(多)对一.(一)对一的关联关系 1).使用列的别名 ①.若不关联数据表,则可以得到关联对象的id属性 ②.若还希望得到关联对象的其它属性.则必须关联其它的数据表 1.创建表: 员工表: DROP ...
随机推荐
- 嵌入式Linux设备驱动程序:在运行时读取驱动程序状态
嵌入式Linux设备驱动程序:在运行时读取驱动程序状态 Embedded Linux device drivers: Reading driver state at runtime 在运行时了解驱动程 ...
- 菜鸟刷题路:剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格 class Solution { public String replaceSpace(String s) { StringBuilder str = new St ...
- springmvc——自定义类型转换器
一.什么是springmvc类型转换器? 在我们的ssm框架中,前端传递过来的参数都是字符串,在controller层接收参数的时候springmvc能够帮我们将大部分字符串类型的参数自动转换为我们指 ...
- CArray CList CMap 插入与遍历效率对比
前言:程序中经常用到不定量数组,选择上可以使用CArray,CList,CMap,而这三者插入及遍历的效率,未测试过,随着数据量越来越大,需要做程序上的优化,于是比较下三种类型的插入盒遍历的效率. 一 ...
- 1.5w字 + 24张图肝翻 TCP。
TCP 是一种面向连接的单播协议,在 TCP 中,并不存在多播.广播的这种行为,因为 TCP 报文段中能明确发送方和接受方的 IP 地址. 在发送数据前,相互通信的双方(即发送方和接受方)需要建立一条 ...
- Spring Boot WebFlux-02——WebFlux Web CRUD 实践
第02课:WebFlux Web CRUD 实践 上一篇基于功能性端点去创建一个简单服务,实现了 Hello.这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD We ...
- 【题解】codeforces 1B Spreadsheets
题意翻译 人们常用的电子表格软件(比如: Excel)采用如下所述的坐标系统:第一列被标为A,第二列为B,以此类推,第26列为Z.接下来为由两个字母构成的列号: 第27列为AA,第28列为AB-在标为 ...
- redis淘汰+过期双向保证高可用 | redis 为什么那么快?
前言 redis和数据相比除了他们的结构型颠覆以外!还有他们存储位置也是不相同.传统数据库将数据存储在硬盘上每次数据操作都需要IO而Redis是将数据存储在内存上的.这里稍微解释下IO是啥意思.IO就 ...
- javascript的getTime函数
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...
- 955.WLB 不加班公司名单!再新增 5 家公司!
大家好!我是<Visual Studio Code 权威指南>的作者韩骏.相信不少童鞋都是因为 VS Code 认识到我:也许是用了我写的 20 多个 VS Code 插件(比如 Code ...