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. 如何在小型pcb的移动设备上获得更好的无线性能

    如何在小型pcb的移动设备上获得更好的无线性能 How to get better wireless performance for mobile devices with small PCBs 小型 ...

  2. 整理AI性能指标

    整理AI性能指标 Sorting out AI performance metrics 推理性能的最佳衡量标准是什么? 在人工智能加速器的世界里,对于给定的算法,芯片的性能经常以每秒万亿次的运算量(T ...

  3. kali2020.4安装openvas(gvm)

    记录一下,方便复习 1.更换kali源,默认源注释掉. sudo vim /etc/apt/sources.list 中科大 deb http://mirrors.ustc.edu.cn/kali k ...

  4. 设置NX欢迎界面

    环境变量 变量名:UGII_WELCOME_PAGE 变量值:http://www.baidu.com/

  5. 如何基于 String 实现同步锁?

    如何基于String实现同步锁? 在某些时候,我们可能想基于字符串做一些事情,比如:针对同一用户的并发同步操作,使用锁字符串的方式实现比较合理. 因为只有在相同字符串的情况下,并发操作才是不被允许的. ...

  6. 《Docker基础与实战,看这一篇就够了》

    什么是Docker? Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术 ...

  7. 《手把手教你》系列基础篇之(三)-java+ selenium自动化测试- 启动三大浏览器(上)(详细教程)

    1.简介 前边宏哥已经将环境搭建好了,今天就在Java项目搭建环境中简单地实践一下: 启动三大浏览器.按市场份额来说,全球前三大浏览器是:IE.Firefox.Chrome.因此宏哥这里主要介绍一下如 ...

  8. 一台服务器能支撑多少个TCP连接

    1. 困惑很多人的并发问题 在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白.那就是一台服务器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这个问题. 很多同学看 ...

  9. OpenGL 实用攻关 001 准备(开题)

    开篇 这里是OpenGL学习中的随笔,会大致讲述定下的目标需求,思路和贴出认为的关键代码以及git仓库地址.会选择性的讲述途中遇到的陷阱,和注意点. 一些资源 笔者是windows 操作系统 VS 2 ...

  10. 10、mysql增量恢复实战

    10.1.实验数据: mysql> select * from test; +----+------+------+ | id | name | age | +----+------+----- ...