简析mapper的result各参数意义(不全待补充)

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moke.springcloud.dao.PaymentDao">

    <insert id="create" parameterType="Payment" useGeneratedKeys="true" keyProperty="id">
        insert into payment(serial) values(#{serial});
    </insert>

    <resultMap id="BaseResultMap" type="com.moke.springcloud.entities.Payment">
        <id column="id" property="id" jdbcType="BIGINT" />
        <id column="serial" property="serial" jdbcType="VARCHAR"/>
    </resultMap>

    <select id="getPaymentById" parameterType="Long" resultMap="BaseResultMap">
        select * from payment where id=#{id};
    </select>
</mapper>

namespace: 对应着mapper文件的名称。使得这个xml配置文件和mapper文件对应起来。
sql语句中的  id:对应mapper文件中的方法名称。
            parameterType:方法参数的类型
            useGeneratedKeys:仅见于insert。对于支持自动生成记录主键的数据库,如:MySQL,SQL Server,此时设置useGeneratedKeys参数值为true,在执行添加记录之后可以获取到数据库自动生成的主键ID。
            keyProperty:主键是自增的情况下,添加一条记录的同时,其主键是不能使用的,但是有时我们需要该主键。此时设置
            useGeneratedKeys="true"  keyProperty="对应的主键的对象"。
            使得我们可以获取到这条新增数据的主键值

resultMap的使用:常用于实体类的属性名和数据库字段名不一致的情况。
  select标签中的resultMap="",在这里设定resultMap的名称。
  resultMap标签中的 id:对应select标签中的resultMap的名称
                   type:对应mapper文件中所需参数的实体类名称。如果没有在application.yml中使用type-aliases-package中指定entity扫描包类,则需要写全实体类的位置。如有则只需要写类名即可。
  <id column="id" property="id" jdbcType="BIGINT" /> :column:  数据库中表的字段名称
                                                       property:实体类中对应属性的名称
                                                       jdbcType:数据库中字段的类型    
posted @ 2021-07-24 19:13  时间会抹去你的痕迹  阅读(426)  评论(0)    收藏  举报