8.1、面向介面編程
- 大家之前都學過面向物件編程,也學習過介面,但在真正的開發中,很多時候我們會選擇面向介面編程
- 根本原因 : 解耦 , 可拓展 , 提高復用 , 分層開發中 , 上層不用管具體的實作 , 大家都遵守共同的標準 , 使得開發變得容易 , 規范性更好
- 在一個面向物件的系統中,系統的各種功能是由許許多多的不同物件協作完成的,在這種情況下,各個物件內部是如何實作自己的,對系統設計人員來講就不那么重要了;
- 而各個物件之間的協作關系則成為系統設計的關鍵,小到不同類之間的通信,大到各模塊之間的互動,在系統設計之初都是要著重考慮的,這也是系統設計的主要作業內容,面向介面編程就是指按照這種思想來編程,
關于介面的理解
- 介面從更深層次的理解,應是定義(規范,約束)與實作(名實分離的原則)的分離,
- 介面的本身反映了系統設計人員對系統的抽象理解,
- 介面應有兩類:
- 第一類是對一個個體的抽象,它可對應為一個抽象體(abstract class);
- 第二類是對一個個體某一方面的抽象,即形成一個抽象面(interface);
- 一個體有可能有多個抽象面,抽象體與抽象面是有區別的,
三個面向區別
- 面向物件是指,我們考慮問題時,以物件為單位,考慮它的屬性及方法 .
- 面向程序是指,我們考慮問題時,以一個具體的流程(事務程序)為單位,考慮它的實作 .
- 介面設計與非介面設計是針對復用技術而言的,與面向物件(程序)不是一個問題.更多的體現就是對系統整體的架構
8.2、使用注解開發
-
注解在介面上實作
@Select("select * from user") List<User> getUsers(); -
需要再核心組態檔中系結介面!
<!--系結介面--> <mappers> <mapper /> </mappers> -
測驗
本質:反射機制實作
底層:動態代理!

Mybatis詳細的執行流程!

8.3、CRUD
我們可以在工具類創建的時候實作自動提交事務!
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}
撰寫介面,增加注解
public interface UserMapper {
@Select("select * from user")
List<User> getUsers();
// 方法存在多個基本型別引數或String型別引數,所有的引數前面必須加上 @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);
}
測驗類
@Test
//使用注解查詢用戶annotation
public void getUserAnnntation(){
//第一步:獲得SqlSession物件
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i = mapper.deleteUser(6);
if (i>0){
System.out.println("洗掉用戶成功");
}
}
【注意:我們必須要講介面注冊系結到我們的核心組態檔中!】
<mappers>
<!--系結的時介面的名字 UserMapper-->
<mapper />
</mappers>
關于@Param() 注解
- 基本型別的引數或者String型別,需要加上
- 參考型別不需要加
- 如果只有一個基本型別的話,可以忽略,但是建議大家都加上!
- 我們在SQL中參考的就是我們這里的 @Param() 中設定的屬性名!
面試題:#{} ${} 區別
-
方式能夠很大程度防止sql注入,$方式無法防止Sql注入,
- $方式一般用于傳入資料庫物件,例如傳入表名,
- 從安全性上考慮,能使用#盡量使用#來傳參,因為這樣可以有效防止SQL注入的問題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/166755.html
標籤:Java
下一篇:myBatis 入門學習
