Mybatis中parameterType、resultType和resultMap三个参数:

1、parameterType:

        指的是传入参数的数据类型,一般作为增删改查的限制条件值,被where、in等限定。外部传入了什么类型参数,这里就写什么类型。对于包装类的数据传入,获取其内部信息,该参数直接作为内部信息的归属指向。

        *注意:在使用parameterType时,参数类型,只能传一个参数,如果有多个参数时要封装,如封装成一个类,要包名加上类名,基本数据类型可以省略一对一、一对多时,若有表的字段相同必须写别名,不然查询结果无法正常映射,出现某属性为空或者返回的结果与预想的不一致,而这往往是没有报错的。

2、resultType:

        指的是接收参数的数据类型,一般作为查询的获取字段信息(主要是一般只有查询会有返回的结果集),被select所限定。数据库利用mybatis、通过sql语句、把数据封装到目标对象,是对接收数据的地点目标的详细说明。可以直接返回给出返回值类型,比如String、Int、Map等等,其中返回list也是将返回类型定义为Map,然后mybatis会自动将这些map放在一个list中,resultType还可以是一个对象。

        

    <select id="find" resultType="TStudent" parameterType="TStudent">
        select * from t_student where 1=1
        <if test="id!=null">and id = ${id}</if>
    </select>

        在mybatis进行查询映射的时候,其实查询出来的每一个属性都放在一个对应的Map里面,其中键是属性名,值就是查询出来的值。当提供的返回类型属性是resultType时,mybatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实Mybatis的每一个查询映射的返回值类型都是resultMap,只是当我们提供的返回类型属性是resultType的时候,mybatis会自动的把对应的值,赋值给resultType所指对象的属性。

        *注意:在使用ResultType的时候,要保证结果集的列名与java对象的属性相同,而ResultMap则不用。

3、resultMap:

        Mybatis会自动创建一个ResultMap对象,然后基于查找出来的属性名进行键值对封装,然后再看到返回类型是所指定的对象,再从ResultMap中取出与该对象对应的键值对进行赋值。

        

<resultMap type="person" id="BaseResultMap">
    <!-- column:库表的字段名 property:实体类里的属性名 -->
    <id column="person_id" property="personId" />
    <result column="name" property="name" />
    <result column="gender" property="gender" />
    <result column="person_addr" property="personAddr" />
    <result column="birthday" property="birthday" />
  </resultMap>
  <!--id:当前sql的唯一标识
     parameterType:输入参数的数据类型 
     resultType:返回值的数据类型 
     #{}:用来接受参数的,如果是传递一个参数#{id}内容任意,如果是多个参数就有一定的规则,采用的是预编译的形式select 
    * from person p where p.id = ? ,安全性很高 -->
 
  <!-- sql语句返回值类型使用resultMap -->
  <select id="selectPersonById" parameterType="java.lang.Integer"
    resultMap="BaseResultMap">
    select * from person p where p.person_id = #{id}
  </select>

        当返回类型直接是一个ResultMap的时候也是非常有用的,这主要用在进行复杂联合查询下,当进行简单的查询时没必要用到ResultMap。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Life_Now

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值