框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

来源:互联网 发布:妮维雅柔美润肤霜 知乎 编辑:程序博客网 时间:2024/06/01 20:48

本节主要内容

1: mapper映射文件输入映射(输入类型)

2:总结&下节预告

本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第十一篇 mapper映射文件之输入映射

声明:本文系凯哥原创。转载请注明出处

一: mapper映射文件输入映射(输入类型)

1.1:mapper.xml文件中那个是输入映射(输入类型)?

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

其中paramenterType就是输入类型。

输入类型有:

简单类型、POJO类型、map类型等。下面我们将一一进行讲解

1.2:简单类型

简单类型就是常见的。如int/stirng等可以参考入门程序中,根据用户id查询用户信息的映射(或者看上图)

1.3 POJO类型

1.3.1 简单的pojo类型(单一的。属性是简单的而非对象或是集合的)

简单pojo类型作为输入参数,可以参考入门程序中,保存用户的那一篇文章。或是如下图:

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

1.3.2:复杂类型的pojo类型(对象中属性是另外一个对象或者是集合)

1:需求

假设入门程序中的用户都是一个班级的(班级包括老师、学校、班级、年级等很多信息。):

数据库中数据:

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

想模糊查询用户是凯哥的都有哪些?

思考这个怎么处理?

可以创建一个综合查询的vo类

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

对应mapper文件:

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

测试类:

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

输出结果:

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

说明:

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

在这个查询语句中,入参是UserVo这个pojo对象。

所以${user}其实就是获取到UsereVo对象中的user这个属性。

而我们知道在UserVo这个对象中的user属性是一个User对象。同时还知道User对象中有个属性是username。

所以这里的${user.username}其实就是获取到UserVo对象中user属性中的username属性值。

也就是说:在使用复杂的POJO类型作为入参的时候,是可以通过连点的方式获取到对象属性中的属性值。

注意:${}中必须是该对象对应属性的属性名称。不能写错

1.4:map作为入参

mapper配置文件写法:

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

mapper接口类:

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

测试类:

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

运行结果:

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

说明:

如果使用map作为入参的时候,对应mapper文件获取值的时候,需要根据map的key进行获取。

如果key不存在会怎么样?

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

比如:在mapper文件中的查询sql语句添加 and sex=${sex} 而这个是入参的map中没有sex这个key

执行后,不会出错。执行sql的时候如果map中没有这个key,也就是更加key获取的时候为空。会将这个空值赋值给sql语句。如下:

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

注意:

如果map的key在其他配置文件中也存在相同的名字,有可能导致获取值的时候错误。

比如:还记得全局配置文件中,数据库配置db.propertiees文件中:

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

有个username这个key。

那么如果把测试测试map这个方法中,usernames这个key换成usernam会怎么样?同时修改mapper.xml文件中对应的key

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

执行:

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射

我们发现,打印出的sql语句username是root而不是凯哥。这个root是db.properties中的啊

所以,在这里需要注意!

二:总结

通过本篇学习,需要掌握(重要!很重要!!必须掌握)

1:parameterType传递简单类型、简单pojo类型怎么处理

2:传递复杂(或者包装)POJO对象的时候怎么处理

3:传递map的时候怎么处理以及使用map的时候需要注意什么

下节预告:

本节学了parameterType可以传递的类型。那么下节课我们将学习returnType的类型

阅读全文
0 0
原创粉丝点击