一、背景
最近在研究Java的框架,剛剛接觸到java對於數據訪問層封裝的框架之一,MyBatis,不得不說使用起來很是方便,跟寫sql語句的感覺一樣一樣的;順便讀了少部分官方文檔,由於英文有限讀的太慢,只是讀了一點關於作用域的內容,後續繼續發現新東西...本文都是建立在自己對於MyBatis的理解之上的,標準還是要參靠官方文檔...
二、理解
1.兩種使用方式
註解:使用註解在接口中的方法上方插入sql語句即可,缺點:如果sql語句很長,那麼就會顯得不那麼美觀了,而且覺得會破壞java代碼的可讀性
xml:清晰明瞭
兩種方式用哪種都行,看個人喜好吧...性能都差不多(反正註解也是在編譯期間生成文件)
2.使用步驟
①創建mybatis的配置文件,配置文件的內容有很多,目前只用了這幾種配置
<configuration>
<!--外部文件指定了驅動,連接,賬號,密碼-->
<properties resource="jdbc.properties"/>
<environments default="development">
<environment id="development">
<!--指定連接方式-->
<transactionManager type="JDBC"/>
<!--指定用連接池-->
<dataSource type="POOLED">
<!--引入外部文件指定的驅動,連接,賬號,密碼-->
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--指定mapper文件(xml寫法需要指定)-->
<mappers>
<mapper resource="Regist.xml"/>
<mapper resource="Login.xml"/>
</mappers>
</configuration>
②創建接口
public interface IRegist {
public void regist(User user);
}
③創建Mapper文件
<!--命名空間必須爲接口全路徑-->
<mapper namespace="com.huimin.mybatis.IRegist">
<!--id是接口中的方法名,parameterType是參數類型,resultType是返回值類型-->
<select id="regist" parameterType="com.huimin.dao.User" resultType="">
-- sql語句,#{}會被翻譯成PreparedStatement,${}會被翻譯成普通的Statement
INSERT INTO person (username,password) VALUES (#{username},#{password})
</select>
</mapper>
④寫Dao層
try {
SqlSession sqlSession = new SsfInstance().Instance().openSession();
IRegist regist = sqlSession.getMapper(IRegist.class);
regist.regist(user);
sqlSession.commit();
sqlSession.close();
return 1;
} catch (Exception e) {
e.printStackTrace();
}
SqlSessionFactory用單例模式創建的,整個項目就一個,直接用就行
三、分析
1.方便,內部封裝了數據庫連接池,省去了反覆創建連接,關閉連接,而且極大的優化數據庫操作的性能
2.穩定,內部分裝了事務,保證了數據庫的一致性,對於數據庫的增刪改都需要提交和關閉操作
相對於jdbc來說,mybatis是真的方便,以上只是對於單獨使用mybatis時的簡單理解,有待繼續深究...