Mybatis的增刪改查
對於MyBatis其他基本操作,就掌握sql語句就不難了
比如insert操作
<insert id="insertUser" parameterType="JiKeUser" statement="PREPARED" keyProperty="id" userGeneratedKeys="true"> INSERT INTO JiKeUser(userName,password) VALUES (#{userName,jdbcType="VARCHAR"},#{password,jdbcType="VARCHAR"}) </insert>
insert標簽的屬性有一個是statementType,這個就是jdbc的預處理屬性,一般如果用PreparedStatement的話,就statementType="PREPARED"
keyProperty屬性是主鍵的意思,而屬性userGeneratedKsys是說采用了Mysql中的主鍵自增機制來完成了這個主鍵設定。
而這個
(#{userName,jdbcType="VARCHAR"}
裏面的jdbcType屬性就是一個Mybatis進行的對mysql數據類型到java數據類型的轉換,這個一般會自動進行,但如果無法自動進行轉換的話,就要像這樣手動進行轉換。
為什麽這個parameterType可以只寫個JiKeUser呢,這個resultType的值沒有用完整的路徑名,這是采用了簡寫機制,就是為類起了個別名,這個操作在基本配置文件用typeAliases來標識:
<typeAliases> <typeAlias alias="JiKeUser" type="jike.book.pojo.JiKeUser"/> </typeAliases>
噢噢噢註意,這個typeAliases標簽的定義一定要在這個environment的定義之前!!
然後看具體操作:
JiKeUser jku = new JiKeUser(); jku.setName = "Ben"; jku.setPassword = "12344"; session.insert("insertUser",jku); session.commit();//提交
要註意insert完後要提交一下這個sql語句,這個一般也能自動提交,但如果不設定的話是不會自動提交的,具體的在事務處理的時候做更詳細的介紹。
update操作:
<update id="updateUser" parameterType="JiKeUser"> UPDATE JiKeUser SET userName=#{userName,jdbcType="VARCHAR"},password=#{password,jdbcType="VARCHAR"} WHERE id = #{id,jdbcType="INTEGER"} </update>
……
……
delete操作,這裏我們換一種實現方式:
之前都是用map配置文件的方式來實現隊數據庫的操作,現在我們mybatis比較古老的方法:map接口的方法來實現。
用map接口來實現有兩個要做的,1是寫接口類,2是用註釋來配置應用。
public interface InterfaceJiKeUserMap { @Delete("delete from JiKeUser where id=#{id}") //這就是個delete語句的一個註釋 public void deleteUser(Integer id); }
這種註釋的寫法其實和配置文件中的一樣的,然後我們要給它定義一個方法。然後你調用這個方法的時候,它就會調用這個註釋中的這個sql語句,也就是說這樣就不需要map配置文件了。
然後這個時候要想的就是怎麽讓基本配置文件找到這個接口。所以我們還有在基本配置文件中做一個設定。在基本配置文件的<mappers>下還要加點東西
<mappers> <mapper resource="jike.book.map.jikeUser.xml"/> <mapper class="jike.book.map.InterfaceJiKeUserMap"/> </mappers>
這個class就是接口的嘛。
然後我們來看看怎麽啦來使用這個接口:
//首先要實現接口,這裏實現的方式比較特殊,它是有mybatis提供的session來自動實現 InterfaceJiKeUserMap ijum = session.getMapper(InterfaceJiKeUserMap.class); ijum.deleteUser(1);//有了這個實現的接口就可以調用方法了
但是,一般我們還是使用這個xml配置文件的方式,接口這種方式還是盡量不要使用,因為它對比較復雜的映射配置的時候是有一定的局限性的。
Mybatis的增刪改查