<!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:数据库中字段的类型