parameterType 和 resultType

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了parameterType 和 resultType相关的知识,希望对你有一定的参考价值。

parameterType

#{} 和 ${}

  1、#{}实现的是向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符即?

  2、使用占位符#{}可以有效防止sql注入,在使用时不需要关心参数值的类型,mybatis会自动进行java类型和jdbc类型的转换。#{}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

 

   ${}#{}不同,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。使用${}不能防止sql注入,但是有时用${}会非常方便。

 

 

传递pojo对象

  Mybatis使用ognl表达式解析对象字段的值,如#{field},如对象字段为对象,表示为#{obj.field}

 

传递hashmap

  传递的map中的keysql中解析的key一致

 

 

resultType

1、输出简单类型必须查询出来的结果集有一条记录,最终将第一个字段的值转换为输出类型,使用sessionselectOne可查询单条记录

2、输出pojo对象和输出pojo列表在sql中定义的resultType是一样的。

返回单个pojo对象要保证sql查询出来的结果集为单条,内部使用session.selectOne方法调用,mapper接口使用pojo对象作为方法返回值。

返回pojo列表表示查询出来的结果集可能为多条,内部使用session.selectList方法,mapper接口使用List<pojo>对象作为方法返回值。

3、输出pojo对象可以改用hashmap输出类型,将输出的字段名称作为mapkeyvalue为字段值。

 

以上是关于parameterType 和 resultType的主要内容,如果未能解决你的问题,请参考以下文章

详谈parameterType与resultType的用法

mybatis 之resultType="HashMap" parameterType="list"

mybatis 中 映射文件 不写 resultType和parameterType,直接在 dao层 方法中写上参数和返回值 就可以?

mybatis类型别名

mybatis传入参数类型parameterType详解

resultmap与resulttype有啥区别