Mybatis 運用泛型減少DAO層程式碼
阿新 • • 發佈:2019-02-05
在ORM開發中,針對不同的型別,一般需要編寫不同的DAO類來處理與資料庫的資料傳遞。
一般包括:新增(add)、修改(update)、根據條件查詢符合數(getCount)、根據條件查詢符合列表(getPage)、獲得某一條資料(get)、刪除(delete);
當然還包括其他一些根據具體業務場景需要提供的額外介面。
比如:學生(User)、教室(ClassRoom)、教師(Teacher),建立Dao,就有想對應的IUserDao、IClassRoomDao、ITeacherDao
每一個Dao介面中又需要有“增刪改查”操作,這時可以使用泛型來來處理,從而減少程式碼量,
定義一個IBaseDao的介面,如下:
public interface IBaseDao<T> {
int add(T t);
int update (T t);
int getCount(@Param("searchName")String search);
List<T> getPage(@Param("searchName")String search,@Param("start")int start,@Param("num")int num);
T getById(@Param("id")int id);
List<T> getAll();
int delete(@Param("id")int id);
}
編寫IUserDao、IClassRoomDao、ITeacherDao 整合 IBaseDao;
注:Mybatis xml 檔案中
<mapper namespace="com.bs.dao.IUserDao" > namespace的值要求全域性唯一,所以需要建立介面
public interface IUserDao extends IBaseDao<User>()
public interface ITeacherDao extends IBaseDao<Teacher>()
public interface IClassRoomDao extends IBaseDao<ClassRoom>()