Mybatis筆記04---使用註解開發

還好江南發表於2020-10-09

8、使用註解開發

8.1、面向介面程式設計

- 大家之前都學過物件導向程式設計,也學習過介面,但在真正的開發中,很多時候我們會選擇面向介面程式設計
- 根本原因 : 解耦 , 可擴充 , 提高複用 , 分層開發中 , 上層不用管具體的實現 , 大家都遵守共同的標準 , 使得開發變得容易 , 規範性更好
- 在一個物件導向的系統中,系統的各種功能是由許許多多的不同物件協作完成的。在這種情況下,各個物件內部是如何實現自己的,對系統設計人員來講就不那麼重要了;
- 而各個物件之間的協作關係則成為系統設計的關鍵。小到不同類之間的通訊,大到各模組之間的互動,在系統設計之初都是要著重考慮的,這也是系統設計的主要工作內容。面向介面程式設計就是指按照這種思想來程式設計。

關於介面的理解

- 介面從更深層次的理解,應是定義(規範,約束)與實現(名實分離的原則)的分離。
- 介面的本身反映了系統設計人員對系統的抽象理解。
- 介面應有兩類:
- 第一類是對一個個體的抽象,它可對應為一個抽象體(abstract class);
- 第二類是對一個個體某一方面的抽象,即形成一個抽象面(interface);
- 一個體有可能有多個抽象面。抽象體與抽象面是有區別的。

三個面向區別

- 物件導向是指,我們考慮問題時,以物件為單位,考慮它的屬性及方法 .
- 程式導向是指,我們考慮問題時,以一個具體的流程(事務過程)為單位,考慮它的實現 .
- 介面設計與非介面設計是針對複用技術而言的,與物件導向(過程)不是一個問題.更多的體現就是對系統整體的架構

8.2、使用註解開發

  1. 註解在介面上實現

    @Select("select * from user")
    List<User> getUsers();
    
  2. 需要再核心配置檔案中繫結介面!

    <!--繫結介面-->
    <mappers>
        <mapper class="com.kuang.dao.UserMapper"/>
    </mappers>
    
  3. 測試

本質:反射機制實現

底層:動態代理!

在這裡插入圖片描述

Mybatis詳細的執行流程!

在這裡插入圖片描述

8.3、CRUD

我們可以在工具類建立的時候實現自動提交事務!

public static SqlSession  getSqlSession(){
    return sqlSessionFactory.openSession(true);
}

編寫介面,增加註解

public interface UserMapper {

    @Select("select * from user")
    List<User> getUsers();

    // 方法存在多個引數,所有的引數前面必須加上 @Param("id")註解
    @Select("select * from user where id = #{id}")
    User getUserByID(@Param("id") int id);


    @Insert("insert into user(id,name,pwd) values (#{id},#{name},#{password})")
    int addUser(User user);

    
    @Update("update user set name=#{name},pwd=#{password} where id = #{id}")
    int updateUser(User user);

    
    @Delete("delete from user where id = #{uid}")
    int deleteUser(@Param("uid") int id);
}

測試類

【注意:我們必須要講介面註冊繫結到我們的核心配置檔案中!】

關於@Param() 註解

  • 基本型別的引數或者String型別,需要加上
  • 引用型別不需要加
  • 如果只有一個基本型別的話,可以忽略,但是建議大家都加上!
  • 我們在SQL中引用的就是我們這裡的 @Param() 中設定的屬性名!

#{} ${} 區別

9、Lombok

Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
  • java library
  • plugs
  • build tools
  • with one annotation your class

使用步驟:

  1. 在IDEA中安裝Lombok外掛!

  2. 在專案中匯入lombok的jar包

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.10</version>
    </dependency>
    
  3. 在實體類上加註解即可!

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    
@Getter and @Setter
@FieldNameConstants
@ToString
@EqualsAndHashCode
@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger
@Data
@Builder
@Singular
@Delegate
@Value
@Accessors
@Wither
@SneakyThrows

說明:

@Data:無參構造,get、set、tostring、hashcode,equals
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@ToString
@Getter

相關文章