xxMapper.xml 文件详解

输入映射:通过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 属性名之间作一个映射关系。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值