mybatis學習:mybatis的注解開發和編寫dao實現類的方式入門


一、使用注解則不需要創建映射配置文件:即xxxDao.xml

javaBean為什么要實現Serializable接口?

  Java的"對象序列化"能讓你將一個實現了Serializable接口的對象轉換成一組byte,這樣日后要用這個對象時候,你就能把這些byte數據恢復出來,並據此重新構建那個對象了。這一點甚至在跨網絡的環境下也是如此,這就意味着序列化機制能自動補償操作系統方面的差異。也就是說,你可以在Windows機器上創鍵一個對象,序列化之后,再通過網絡傳到Unix機器上,然后在那里進行重建。你不用擔心在不同的平台上數據是怎樣表示的,byte順序怎樣,或者別的什么細節。

 

入門案例:

  把IUserDao.xml移除,在dao接口的方法上使用@Select注解,並且指定SQL語句

  同時需要在SqlMapConfig.xml中的mapper配置時,使用class屬性指定dao接口的全限定類名

  配置主配置文件:SqlMapConifg.xml

<!--指定映射配置文件的位置,映射配置文件指的是每個dao獨立的配置文件
        如果用注解來配置,此處應該使用class屬性指定被注解的dao全限定類名
    -->
    <mappers>
        <mapper class="cn.flypig666.dao.IUserDao"/>
    </mappers>

   在dao中使用注解:@Select("select * from user")

public interface IUserDao {

    /**
     * 查詢所有結果
     * @return
     */
    @Select("select * from user")
    List<User> findAll();
}

二、自定義Mybatis的分析

mybatis在使用代理dao的方式實現增刪改查時具體步驟:

  1、 創建代理對象

  2、 在代理對象中調用selectList

查詢所有的分析:

  1. 根據配置文件的信息創建Connection對象

    注冊驅動,獲取連接

  2. 獲取預處理對象PrepareSatament  

    此時需要sql語句

    con.prepareStatement(sql)

  3. 執行查詢

    ResultSet resultSet = prepareStatement.executeQuery();

  4. 遍歷結果集用於封裝

    List<E> list = new ArrayList();

    where(resultSet.next()){

      E  element = (E)Class.forName(配置的全限定類名).newInstance()

      //進行封裝,將每個rs的內容都添加到elemet中

      /*

      我們的實體類屬性和表中的列名是一致的

      於是我們就可以把表的列名看成是實體類的屬性名稱-----------------------------------此處使用到的技術:反射封裝

      就可以使用反射的方式來根據名稱獲取每個屬性,並把值進去

      */

      //把element加入到list中

      list.add(element);

    }

    5. 返回list

       return list;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM