一、select元素
用於查詢
常用屬性:
- id 唯一標識,一般和接口的方法名一致
- parameteType 可以看作參數類型,取值基本數據類型或全限定類名
- resultMap resultMap元素的id
- resultType 可以看作結果類型,取值基本數據類型或全限定類名
注意: resultType和resultMap兩者只能取其一。
使用:
<select id="getById" resultType="com.mybatis.domain.User" parameterType="int">
select * from user where id = #{id}
</select>
根據ID查詢用戶所有信息,並將結果封裝到User類。
resultMap屬性結合resultMap元素使用。
二、insert元素
用於添加數據
<insert id="insert" parameterType="com.mybatis.domain.Student">
insert into student set id=#{id},name=#{name}
</insert>
三、update元素
用於更新
<update id="update" parameterType="Long" >
update student set name = "lihua" where id = #{name}
</update>
四、delete元素
<delete id="delete" parameterType="Long">
delete from student where id=#{id}
</delete>
注意:增刪改後必須提交事務即執行語句sqlSession.commit();
否則表的數據不會改變
五、思考和擴展
<insert id="dui">
delete from student where id = 10;
</insert>
<select id="dui">
delete from student where id = 5;
</select>
這條兩條語句能否會執行?
能執行的原因是什麼?
答案在這篇博客中
六、sql元素
提取重複的sql語句
<sql id="sql1">
select * from
</sql>
<sql id="sql2">
id,name
</sql>
<select id="getAll" resultType="com.mybatis.domain.Student">
select <include refid="sql2"/> from student
</select>
<!-- <select id="getAll" resultType="com.mybatis.domain.Student">-->
<!-- <include refid="sql1"/> student-->
<!-- </select>-->
七、resultMap元素
resultMap元素的作用很多使用比較複雜,這裏只介紹一個簡單的用法。有關級聯請看另一篇博客。
mybatis會自動將查詢的結果封裝到自定義的實體類裏但前提是結果列表的列名要和實體類的屬性名一致,如果不一致會導致無法封裝。這是便可以用resultMap來對結果進行映射。
<resultMap id="restMap" type="com.mybatis.domain.Student">
<id property="userId" column="id"/>
<result property="userName" column="name"/>
</resultMap>
id標識表的id字段,property表示實體類的屬性,column表示數據庫表的列名。如果只是這樣配置還不行因爲還沒使用到這個resultMap。
<select id="getAll" resultMap="restMap">
select * from student
</select>
這樣便可以使用到這個resultMap,select的resultMap的值爲result Map的id值。