select
<!-- 查询的statement,
id:在同一个命名空间下的唯一标识;使用动态代理之后,要求和mapper接口的方法名一致。必须属性
resultType:sql语句的结果集封装类型;使用动态代理之后,要求和mapper接口方法的返回类型一致。和resultMap二选一
parameterType:参数类型;使用动态代理之后,要求和mapper接口的方法参数类型一致。可省略,这里就省略了
内容:查询的sql语句
-->
<select id="queryUserById" resultType="User">
select *,user_name from tb_user where id = #{id}
insert
<!-- 新增的statement
id:在同一个命名空间下的唯一标识;使用动态代理之后,要求和mapper接口的方法名一致。必须属性
parameterType:参数类型;使用动态代理之后,要求和mapper接口的方法参数类型一致。可省略
内容:新增的sql语句
-->
<insert id="insertUser" parameterType="User">
INSERT INTO tb_user (
user_name,
password,
name,
age,
sex,
birthday,
created,
updated
)
VALUES
(
#{userName},
#{password},
#{name},
#{age},
#{sex},
#{birthday},
NOW(),
NOW()
);
</insert>
主键回写:useGeneratedKeys
<!-- 新增的statement
id:在同一个命名空间下的唯一标识;使用动态代理之后,要求和mapper接口的方法名一致。必须属性
parameterType:参数类型;使用动态代理之后,要求和mapper接口的方法参数类型一致。可省略
useGeneratedKeys:开启主键回写,回写到pojo参数中
keyProperty:主键的属性名
keyColumn:主键的列名,如果主键的列名和属性名一致,该属性可省略
内容:新增的sql语句
-->
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id" keyColumn="id" parameterType="User">
INSERT INTO tb_user (
user_name,
password,
name,
age,
sex,
birthday,
created,
updated
)
VALUES
(
#{userName},
#{password},
#{name},
#{age},
#{sex},
#{birthday},
NOW(),
NOW()
);
</insert>
主键回写:selectKey标签
<!-- 新增的statement
id:在同一个命名空间下的唯一标识;使用动态代理之后,要求和mapper接口的方法名一致。必须属性
parameterType:参数类型;使用动态代理之后,要求和mapper接口的方法参数类型一致。可省略
内容:新增的sql语句
-->
<insert id="insertUser" parameterType="User">
<!-- 查询新增数据的主键,可以在新增sql语句之前或者之后执行
order:执行顺序,必须
BEFORE:在新增sql语句之前执行,通常主键自增长的oracle使用这种方式
AFTER:在新增sql语句之后执行,通常主键自增长的mysql使用这种方式
keyProperty:返回值写到pojo参数的属性名,必须
resultType:返回值类型,必须
-->
<selectKey order="AFTER" resultType="long">
select LAST_INSERT_ID()
</selectKey>
INSERT INTO tb_user (
user_name,
password,
name,
age,
sex,
birthday,
created,
updated
)
VALUES
(
#{userName},
#{password},
#{name},
#{age},
#{sex},
#{birthday},
NOW(),
NOW()
);
</insert>
update
<!-- 更新的statement
id:在同一个命名空间下的唯一标识;使用动态代理之后,要求和mapper接口的方法名一致。必须属性
parameterType:参数类型;使用动态代理之后,要求和mapper接口的方法参数类型一致。可省略
内容:更新的sql语句
-->
<update id="updateUser" parameterType="com.atguigu.mybatis.pojo.User">
UPDATE tb_user
SET
user_name = #{userName},
password = #{password},
name = #{name},
age =
#{age},
sex = #{sex},
birthday = #{birthday},
updated = NOW()
WHERE
(id = #{id});
</update>
delete
<!-- 删除的statement
id:在同一个命名空间下的唯一标识;使用动态代理之后,要求和mapper接口的方法名一致。必须属性
parameterType:参数类型;使用动态代理之后,要求和mapper接口的方法参数类型一致。可省略
内容:删除的sql语句
-->
<delete id="deleteUserById" parameterType="java.lang.Long">
delete from tb_user where id=#{id}
</delete>