查詢語句是MyBatis最經常使用的語句之一。html
執行簡單查詢的select元素是很是簡單的:數據庫
<select id=」selectUser」 parameterType=」int」 resultType=」hashmap」> SELECT * FROM PERSON WHERE ID = #{id} </select>
這個語句被稱做selectUser,接受一個int類型的參數,返回的一個HashMap類型的對象。dom
#{id}告訴MyBatis建立一個預處理參數,至關於JDBC中的"?"。測試
接下里介紹select元素的屬性:spa
介紹這三種元素的屬性:code
示例:htm
<insert id="insertUser" parameterType="com.dj.domain.User"> insert into User (id,username,password,email,bio) values (#{id},#{username},#{password},#{email}) </insert> <update id="updateUser" parameterType="com.dj.domain.User"> update User set username = #{username}, password = #{password}, email = #{email}, bio = #{bio} where id = #{id} </update> <delete id="deleteUser」 parameterType="int"> delete from User where id = #{id} </delete>
如前所述,插入語句有一點多,它有一些屬性和子元素用來處理主鍵的生成。首先,若是你的數據庫支持自動生成主鍵的字段(好比 MySQL 和 SQL Server 數據庫),那麼你能夠設置 useGeneratedKeys=」true」,並且設置 keyProperty 到你已經作好的目標屬性上。例如,若是上面的 Author 表已經對 id 使用了自動生成的列類型,那麼語句能夠修改成:對象
<insert id="insertUser" parameterType="com.dj.domain.User" useGenerateKeys="true" keyProperty="id"> insert into User (id,username,password,email,bio) values (#{id},#{username},#{password},#{email}) </insert>
MyBatis對於不支持自動生成類型的數據庫(如Oracle)或可能不支持自動生成主鍵的jdbc驅動來講,有另一種方法來生成主鍵。blog
<insert id="insertUser" parameterType="com.dj.domain.User"> <selectKey keyProperty="id" resultType="int" order="BEFORE"> select SEQUENCE_T_USER.nextval as id from dual </selectKey> insert into User (id,username,password,email,bio) values (#{id},#{username},#{password},#{email}) </insert>
select元素先運行,User的id會被設置,而後插入語句被調用。開發
selectKey 元素描述以下:
parameterType能夠設置成基本數據類型和複雜類型,例如一個User類型。
resultMap是MyBatis最重要最強大的元素。它的做用就是告訴MyBatis將從結果集中取出的數據轉換成開發者所須要的對象。
第一種狀況,當你遇到查詢到的數據的列和須要返回的對象的屬性不一致時,可使用resultMap進行處理。
第二種狀況,進行多表查詢時,返回的對象關聯到另外一個對象,這時候簡單的映射已經不能解決問題了,必須使用resultMap元素來完成關聯映射。
接下來咱們對resultMap進行一個簡單的測試:http://www.cnblogs.com/dj-blog/p/7563037.html