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映射文件之输出映射的更多相关文章

  1. 笔记:MyBatis Mapper XML文件详解 - 映射和参数

    MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% ...

  2. mybatis mapper xml文件的导入方式和查询方式

    mybatis mapper xml文件的导入方式和查询方式 ssm框架 Mybatis  mapper与SQLSession的关系 每个基于MyBatis的应用都是以一个SqlSessionFact ...

  3. Python学习系列(五)(文件操作及其字典)

    Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件      在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...

  4. MyBatis Mapper.xml文件中 $和#的区别

    MyBatis Mapper.xml文件中 $和#的区别   网上有很多,总之,简略的写一下,作为备忘.例子中假设参数名为 paramName,类型为 VARCHAR . 1.优先使用#{paramN ...

  5. mybatis mapper xml文件配置resultmap时,id行和result行有什么区别?

    mybatis mapper xml文件配置resultmap时,id行和result行有什么区别? <resultMap id = "CashInvoiceMap" typ ...

  6. Html5 学习系列(四)文件操作API

    原文:Html5 学习系列(四)文件操作API 引言 在之前我们操作本地文件都是使用flash.silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很难进行跨平台.或者跨 ...

  7. SQL映射文件-----MySQL关系映射【1对1,1对多,多对多】

    SSM框架下,mapper.xml 中 association 标签和 collection 标签的使用 当数据库中表与表之间有关联时,在对数据库进行操作时,就不只是针对某一张表了,需要联表查询 My ...

  8. Java-MyBatis-MyBatis3-XML映射文件:结果映射

    ylbtech-Java-MyBatis-MyBatis3-XML映射文件:结果映射 1.返回顶部 1. 结果映射 resultMap 元素是 MyBatis 中最重要最强大的元素.它可以让你从 90 ...

  9. XML映射文件中关系映射

    映射(多)对一.(一)对一的关联关系 1).使用列的别名 ①.若不关联数据表,则可以得到关联对象的id属性 ②.若还希望得到关联对象的其它属性.则必须关联其它的数据表 1.创建表: 员工表: DROP ...

随机推荐

  1. CAP 5.1 版本发布通告 - 你期待的 Redis 来了

    前言 今天,我们很高兴宣布 CAP 发布 5.1 版本正式版,在这个版本里我们同样引入了更多令人激动的新特性和改进,同时也得到越来越多人的喜爱. 得益于社区的反馈和贡献者的支持,在过去的两个月里,我们 ...

  2. JavaScript 中数组 sort() 方法的基本使用

    在日常的代码开发中,关于数组排序的操作可不少,JavaScript 中可以调用 sort 方法对数组进行快速排序. 今天,就数组的 sort 方法来学习一下,避免日后踩坑的悲惨遭遇. 概念 sort ...

  3. 桥接PyTorch和TVM

    桥接PyTorch和TVM 人工智能最引人入胜的一些应用是自然语言处理.像BERT或GPT-2之类的模型及其变体,可以获住足够多的文本信息. 这些模型属于称为Transformers的神经网络类体系结 ...

  4. 人工智能AI智能加速卡技术

    人工智能AI智能加速卡技术 一. 可编程AI加速卡 1. 概述: 这款可编程AI加速器卡具备 FPGA 加速的强大性能和多功能性,可部署AI加速器IP(WNN/GNN,直接加速卷积神经网络,直接运行常 ...

  5. 视频系列:RTX实时射线追踪(上)

    视频系列:RTX实时射线追踪(上) Video Series: Practical Real-Time Ray Tracing With RTX RTX在游戏和应用程序中引入了一个令人兴奋的和根本性的 ...

  6. 多核片上系统(SoC)架构的嵌入式DSP软件设计

    多核片上系统(SoC)架构的嵌入式DSP软件设计 Multicore a System-on-a-Chip (SoC) Architecture SoCs的软件开发涉及到基于最强大的计算模型在各种处理 ...

  7. LED液晶与OLED:电视显示技术比较

    LED液晶与OLED:电视显示技术比较 LED LCD vs. OLED: TV display technologies compared 到目前为止,LED-LCD是主导的电视显示技术,特别是在等 ...

  8. SpringCloud01:微服务概述

    一.什么是微服务 微服务是一种架构风格,是一种架构设计方式,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地 ...

  9. JVM Ecosystem Report 2020 (2020年JVM生态系统报告)

    本文翻译自SNYK于2020年发布的< JVM Ecosystem Report 2020 >,全文使用机器翻译自动生成,人为将翻译的离谱和翻译明显错误的地方修正到勉强能看懂的程度. 英语 ...

  10. 【VBS】获取文件夹大小

    文件截图: 运行结果: 第一步:编写脚本 GetFloderSize.vbs 1 '获得文件夹的大小 by 王牌飞行员(https://www.cnblogs.com/KMould/p/1233481 ...