您的位置:首页 > 移动开发

xxMapper.xml 文件详解

2017-12-26 20:40 323 查看

输入映射:通过parameterType来指定输入参数的类型,类型可以是简单类型、hashmap、pojo类型

1、简单类型、pojo类型在配置文件中有

2、hashmap

<select id="finfUserByHashMap" parameterType="hashmap"  resultType="user">
select * from user where id=#{id} and username like '%${username}%'
</select>

注意:两个参数 id 和 username 为 hashmap 中的 key,hashmap为默认支持的别名。

3、传递 pojo 的包装对象

需求:进行综合查询,需要传入的查询条件很复杂(包括用户信息、商品信息、订单信息、其他信息等等)

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

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

具体做法:创建一个包装类(一般命名为 xxxQueryVo),在其中声明需要包装进来的所有类,并生成其getter和setter方法。之后即可在xxxMapper.xml中用:属性.属性.属性 的方式来获取查询条件值

4、xxxMapper.xml

在 UserMapper.xml 中定义用户信息综合查询(查询条件复杂)

用:属性.属性.属性 的方式来获取查询条件值


输出映射

1、resultType ,注意:

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

B、当查询出来的结果集只有一列且只有一行,可以使用简单类型进行输出映射。如分页时的 count 总数。

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

D、在 xxxMapper.java 中指定的方法的返回值可能会不一样:若输出的是单个pojo对象,那么 xxxMapper.java 中的返回值也是单个 pojo 对象;若输出的是 pojo对象的list集合,那么 xxxMapper.java 中的返回值是 pojo对象的list集合

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

2、resultMap:MyBatis 中使用 resultMap 来完成高级输出结果映射

A、定义resultMap

<!-- 定义 resultMap
type:resultMap 最终映射的 java 对象类型,可以使用别名
id:对 resultMap 的唯一标识 -->
<resultMap type="user" id="userResultMap">
<!-- id 表示查询结果集中的唯一标识
column:查询出来的列名
property:type指定的pojo类型中的属性名
最终 resultMap 对 column 和 property 做一个映射关系(对应关系) -->
<id column="id_" property="id"/>
<!-- result 表示查询结果集中的一般标识
column:查询出来的列名
property:type指定的pojo类型中的属性名
最终 resultMap 对 column 和 property 做一个映射关系(对应关系) -->
<result column="username_" property="username"/>
</resultMap>

B、使用resultMap
<!-- 使用resultMap进行输出映射
resultMap:指定定义的resultMap的id,如果这个resultMap在其他的xxxMapper.xml文     件中,前面需要加上namespace -->
<select id="getListByResultMap" resultMap="userResultMap">
select id id_,username username_ from user
</select>


小结:

如果 resultType 进行输出映射时,只有查询出来的列名和 pojo 中的属性名一致,该列才可以映射成功;如果此时查询出来的列名和 pojo 中的属性名不一致,则可以通过定义一个 resultMap 来对列名和 pojo 属性名之间作一个映射关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: