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>