Mybatis中*Type和*Map的区别

一.parameterType和parameterMap的区别

1.parameterType传参时sql语句中对应的#{参数名}要与Mapper接口方法中参数名一致,传实体对象时,要求对象的属性名与与sql语句中#{参数名}一致
2.parameterMap传参时

<parameterMap id="TUserParm" type="com.company.shopping.vo.LoginVo">
    <parameter property="name"/>
    <parameter property="password"/>
</parameterMap>
<!--给查询列单独取名-->
<sql id="usercolumns">
      id, name, password, sex, phone, email, is_admin, IsValid          
</sql>
<!--查询语句-->
<select id="selectUserByNameAndPwd" parameterMap="TUserParm" resultMap="TUserMap">
    select <include refid="usercolumns"></include>
    from t_user
    where IsValid=1
    and name=?
    and password=?
</select>

parameterMap中sql语句中对应的参数名与参数映射parameterMap中property=" " 一致,而property=" " 要与type传的对象中属性名一致

parameterMap匹配SQL语句中的?号, 跟JDBC中的
PreparedStatement类似,注意传递参数对应顺序要一致

二.resultType和resultMap的区别

1.resultType(基本映射)查询结果返回值的列名与实体对象的属性名要一致,比如我列名为 is_admin 那么实体对象中的属性名必须为 is_admin 否则会造成ORM失效 不太灵活
2.resultMap(高级映射)

<resultMap type="com.company.shopping.entity.TUser" id="TUserMap">
    <result property="id" column="id" jdbcType="INTEGER"/>
    <result property="name" column="name" jdbcType="VARCHAR"/>
    <result property="password" column="password" jdbcType="VARCHAR"/>
    <result property="sex" column="sex" jdbcType="VARCHAR"/>
    <result property="phone" column="phone" jdbcType="VARCHAR"/>
    <result property="email" column="email" jdbcType="VARCHAR"/>
    <result property="isAdmin" column="is_admin" jdbcType="INTEGER"/>
    <result property="isvalid" column="IsValid" jdbcType="INTEGER"/>
</resultMap>
<!--给查询列单独取名-->
<sql id="usercolumns">
      id, name, password, sex, phone, email, is_admin, IsValid          
</sql>
<select id="selectUserByNameAndPwd" parameterType="com.company.shopping.vo.LoginVo" resultMap="TUserMap">
    select <include refid="usercolumns"></include>
    from t_user
    where IsValid=1
    and name=#{name}
    and password=#{password}
</select>

可以自定义属性名,不需要与返回值列名一致
而且resultMap中可以定义association,collection做嵌套结果:联表查询.满足MyBatis的关联映射。resultMap使用是比较灵活的。

鸡汤:要看这世界如何,看那类人掌握了世界,要看自己如何,看那种情绪主导左右

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值