1. 程式人生 > >Mybatis的增刪改查

Mybatis的增刪改查

完成 app resource 成了 type nbsp 自動 values state

對於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的增刪改查