Mybatis筆記04---使用註解開發
8、使用註解開發
8.1、面向介面程式設計
- 大家之前都學過物件導向程式設計,也學習過介面,但在真正的開發中,很多時候我們會選擇面向介面程式設計
- 根本原因 : 解耦 , 可擴充 , 提高複用 , 分層開發中 , 上層不用管具體的實現 , 大家都遵守共同的標準 , 使得開發變得容易 , 規範性更好
- 在一個物件導向的系統中,系統的各種功能是由許許多多的不同物件協作完成的。在這種情況下,各個物件內部是如何實現自己的,對系統設計人員來講就不那麼重要了;
- 而各個物件之間的協作關係則成為系統設計的關鍵。小到不同類之間的通訊,大到各模組之間的互動,在系統設計之初都是要著重考慮的,這也是系統設計的主要工作內容。面向介面程式設計就是指按照這種思想來程式設計。
關於介面的理解
- 介面從更深層次的理解,應是定義(規範,約束)與實現(名實分離的原則)的分離。
- 介面的本身反映了系統設計人員對系統的抽象理解。
- 介面應有兩類:
- 第一類是對一個個體的抽象,它可對應為一個抽象體(abstract class);
- 第二類是對一個個體某一方面的抽象,即形成一個抽象面(interface);
- 一個體有可能有多個抽象面。抽象體與抽象面是有區別的。
三個面向區別
- 物件導向是指,我們考慮問題時,以物件為單位,考慮它的屬性及方法 .
- 程式導向是指,我們考慮問題時,以一個具體的流程(事務過程)為單位,考慮它的實現 .
- 介面設計與非介面設計是針對複用技術而言的,與物件導向(過程)不是一個問題.更多的體現就是對系統整體的架構
8.2、使用註解開發
-
註解在介面上實現
@Select("select * from user") List<User> getUsers();
-
需要再核心配置檔案中繫結介面!
<!--繫結介面--> <mappers> <mapper class="com.kuang.dao.UserMapper"/> </mappers>
-
測試
本質:反射機制實現
底層:動態代理!
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
使用步驟:
-
在IDEA中安裝Lombok外掛!
-
在專案中匯入lombok的jar包
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> </dependency>
-
在實體類上加註解即可!
@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
相關文章
- Mybatis20_mybatis註解開發9MyBatis
- Mybatis-05 註解開發MyBatis
- Mybatis註解開發案例(入門)MyBatis
- Mybatis相關:基於註解的Mybatis開發MyBatis
- Mybatis高階:Mybatis註解開發單表操作,Mybatis註解開發多表操作,構建sql語句,綜合案例學生管理系統使用介面註解方式優化MyBatisSQL優化
- Mybatis引數傳遞&註解開發MyBatis
- 使用註解開發
- myBatis——註解,#{}與${},resultMap的使用MyBatis
- Mybatis學習筆記 1:一個Mybatis使用例子MyBatis筆記
- Spring-05 使用註解開發Spring
- 註解開發
- Spring筆記(8) - @EventListener註解探究Spring筆記
- 註解和反射學習筆記反射筆記
- MyBatis筆記(三)MyBatis筆記
- MyBatis筆記(六)MyBatis筆記
- MyBatis筆記(一)MyBatis筆記
- MyBatis筆記(七)MyBatis筆記
- 學習MyBatis必知必會(7)~註解開發、動態SQLMyBatisSQL
- MyBatis 中 @Param 註解的四種使用場景MyBatis
- Spring學習之05使用註解開發Spring
- SpringMVC入門學習---使用註解開發SpringMVC
- 開發筆記:使用 mpvue 開發鬥圖小程式筆記Vue
- 【Spring註解驅動開發】使用@Lazy註解實現懶載入Spring
- mybatis原始碼-註解sqlMyBatis原始碼SQL
- spring註解開發Spring
- Sping註解開發
- Spring 註解開發Spring
- Java註解與反射學習筆記Java反射筆記
- MyBatis複習筆記MyBatis筆記
- Mybatis筆記總結MyBatis筆記
- 【Spring註解驅動開發】使用@Scope註解設定元件的作用域Spring元件
- 【Spring註解驅動開發】在@Import註解中使用ImportBeanDefinitionRegistrar向容器中註冊beanSpringImportBean
- 【SpringBoot學習筆記】-IDEA中使用gradle和MybatisSpring Boot筆記IdeaGradleMyBatis
- 【Spring註解驅動開發】在@Import註解中使用ImportSelector介面匯入beanSpringImportBean
- 【Spring註解開發】元件註冊-使用@Configuration和@Bean給容器中註冊元件Spring元件Bean
- Android開發筆記[18]-使用本地模組Android筆記
- Spring的註解開發Spring
- Springmvc全註解開發SpringMVC