數據訪問層MyBatis解析

一、背景

        最近在研究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時的簡單理解,有待繼續深究...


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章