mybatis(5)mybatis输入映射和输出映射

目录

输入映射

传递pojo的包装对象 

resulttype

简单类型输出

输出pojo对象或者pojo列表 

使用resultMap作为statement的输出映射类型


 

 

输入映射

通过parameterType指定输入参数的类型,类型可以是简单类型、hashmap、pojo的包装类型

传递pojo的包装对象 

需求

完成用户信息的综合查询,需要传入查询条件很复杂(可能包括用户信息、其它信息,比如商品、订单的)

多条件查询 可能是多个表

定义pojo的包装对象 

针对上边需求,建议使用自定义的包装类型的pojo。

在包装类型的pojo中将复杂的查询条件包装进去。

mybatis(5)mybatis输入映射和输出映射

对pojo的扩展 比如用户信息不满足需求需要做扩展 

package com.pro.dao;

public class UserCustormer extends User {

	
	//可以扩展 用户的信息 
}

mapper.xml

在UserMapper.xml中定义用户信息综合查询(查询条件复杂,通过高级查询进行复杂关联查询)。

mybatis(5)mybatis输入映射和输出映射

mapper.java

mybatis(5)mybatis输入映射和输出映射

测试代码

mybatis(5)mybatis输入映射和输出映射

resulttype

使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。

如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象。

只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。

简单类型输出

需求

用户信息的综合查询列表总数,通过查询总数和上边用户综合查询列表才可以实现分页。

mapper.xml

mybatis(5)mybatis输入映射和输出映射

mapper.java

mybatis(5)mybatis输入映射和输出映射

测试代码

mybatis(5)mybatis输入映射和输出映射

小结

查询出来的结果集只有一行且一列,可以使用简单类型进行输出映射。

输出pojo对象或者pojo列表 

 

不管是输出的pojo单个对象还是一个列表(list中包括pojo),在mapper.xml中resultType指定的类型是一样的。

在mapper.java指定的方法返回值类型不一样:

         1、输出单个pojo对象,方法返回值是单个对象类型

mybatis(5)mybatis输入映射和输出映射

    2、输出pojo对象list,方法返回值是List<Pojo>

 

mybatis(5)mybatis输入映射和输出映射

生成的动态代理对象中是根据mapper方法的返回值类型确定是调用selectOne(返回单个对象调用)还是selectList (返回集合对象调用 ).

 

 

 

使用resultMap作为statement的输出映射类型

mybatis中使用resultMap完成高级输出结果映射。

resultMap使用方法、

如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。

1、定义resultMap

2、使用resultMap作为statement的输出映射类型

 

将下边的sql使用User完成映射

SELECT id id_,username username_ FROM USER WHERE id=#{value}

User类中属性名和上边查询列名不一致。

定义resultmap

在mapper.xml中命名空间下面定义

mybatis(5)mybatis输入映射和输出映射

使用resultMap作为statement的输出映射类型

mybatis(5)mybatis输入映射和输出映射

mapper.java

mybatis(5)mybatis输入映射和输出映射

 测试

mybatis(5)mybatis输入映射和输出映射

小结

使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。

如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。