SSM之MyBatis | 您所在的位置:网站首页 › ssm-mapping › SSM之MyBatis |
系列文章目录文章目录系列文章目录前言resultType结果返回类型输出简单类型输出POJO单个对象输出POJO列表小结resultMap结果返回类型总结附加——如果传入是参数是一个包装类怎么使用前言 回顾一下前面的mybatis,我们讲到输入类型的参数类型 参数类型我们也称作输入映射 而resultType和resultMap也叫作输出映射(可以看前面一篇mybatis) 这里接着讲输出映射resultType和resultMap 而我们的mybatis的核心就是学会配置这两个东西 输入就是前面将的输入参数,这里我们探讨一下返回值,即输出映射 意思就是,返回值,我们既可以写resultType类型,也可以写resultMap类型 二选一,写了resultType就不能写resultMap,同理写了resultMap就不能写resultType 不能同时配置,所以必须要了解他们的使用 注意:类型有很多,但是常用的就是resultType和resultMap resultType结果返回类型使用resultType进行结果映射时,查询的列名和映射的pojo属性名完全一致,该列才能映射成功。 如果查询的列名和映射的pojo属性名全部不一致,则不会创建pojo对象; 如果查询的列名和映射的pojo属性名有一个一致,就会创建pojo对象。 翻译成人话就是:数据库里面的对应的表的字段和我们模型model里面的字段是一样的时候就可以用resultType,如果不一致的话就用resultMap 假如其中一个字段不完全一致,那么这个字段就存不到model里面去,其它的完全一致的还是能够存进去的,但是也是有问题的啊, 所以不能这样做 输出简单类型当输出结果只有一列时,可以使用ResultType指定简单类型作为输出结果类型。 案例:输出一个count(*) 我们跟着来操作一下 然后就可以测试了 首先通过session获取到模型的映射接口拿到userMapper 这个很容易理解,上面返回int,这里直接返回一个对象就行了,一样的,不再赘述 输出单个pojo对象和pojo列表时,mapper映射文件中的resultType的类型是一样的,mapper接口的方法返回值不同。 同样的mapper映射文件,返回单个对象和对象列表时,mapper接口在生成动态代理的时候,会根据返回值的类型,决定调用selectOne方法还是selectList方法。 resultMap结果返回类型数据库里面的对应的表的字段和我们模型model里面的字段是一样的时候就可以用resultType,如果不一致的话就用resultMap 如果查询出来的列名和属性名不一致,通过定义一个resultMap将列名和pojo属性名之间作一个映射关系。 1、定义resultMap 2、使用resultMap作为statement的输出映射类型 下面看怎么操作 比如我们现在查询的结果的列名跟model里面不一样了,我们就得使用resultMap了 假如有一个字段相同呢 再运行看看 只要有一个字段一直,返回的数据都不会都为空如果我们非要它全部返回数据怎么做,这就需要resultMap,来进行结果的映射 就这么简单 注意resultMap有一定的容错率,但是也要符合逻辑 比如这样也能查出来 但是一般我们还是规范的写,只是要知道,mybatis也比较智能,能够智能的有一些容错率 总结数据库里面的对应的表的字段和我们模型model里面的字段完全一致的时候就可以用resultType, 如果不完全一致的话就用resultMap 附加——如果传入是参数是一个包装类怎么使用mapper接口 对应的映射文件 这样就行 所有的重点就在于 如果传入是参数是一个包装类怎么使用,在映射文件里面的sql里面参数一定要加上具体的类名打点调用 比如这里的#{user.id}
|
CopyRight 2018-2019 实验室设备网 版权所有 |