十九、基於SSM框架,BaseDao --> dao層的抽取優化
通常來說,在一個專案中我們會使用到多個dao,比如在一個資訊管理系統中,有 UserDao/ MessageDao等;
每個 dao 都有相同的 CRUD 程式碼,每個 dao 去寫也是可以的,但是程式碼量會偏多,程式碼結構不夠好,顯得比較臃腫;實際上可以通過泛型來抽取出一個 BaseDao,這個 BaseDao 包含了各個 dao 的增刪改查程式碼,建立新的 dao 時繼承BaseDao,就可以減少很多重複的程式碼,提高工作效率,優化程式碼結構!
下面我們先寫一個普通的Dao,然後抽取出BaseDao,看Dao前後程式碼變化。
1.抽取前的 dao 介面程式碼
package com.storm.user.dao;
import com.storm.user.entity.User;
import org.springframework.stereotype.Repository;
import java.io.Serializable;
import java.util.List;
@Repository
public interface UserDao {
public int insert(User user);// 儲存
public int delete(User user);// 刪除使用者
public int update(Serializable id);// 更新使用者
public User findById(Serializable id);// 根據主鍵查詢使用者
public List<User> getList();// 檢視所有
}
2.建立 BaseDao 介面
這個介面不需要改動太多,只需要把基本的增刪改查程式碼改成泛型
package com.storm.base.dao;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* DAO基礎操作模板
*
* @param <E> 泛型
* @param <PK> 主鍵
*
* @author zzz
* @date 2018-01-19
*/
public interface BaseDao<E,PK extends Serializable> {
/**
* 新增操作
*
* @param entity 實體物件
* @return
*/
int insert(E entity);
/**
* 刪除操作
*
* @param id 主鍵
* @return
*/
int delete(Serializable id);
/**
* 修改操作
*
* @param entity 實體物件
* @return
*/
int update(E entity);
/**
* 獲取符合條件的單條資料
*
* @param param 實體物件
* @return
*/
E findById(Serializable id);
/**
* 獲取符合條件引數的所有資料
*
* @param param 實體物件
* @return
*/
List<E> getList();
}
3.修改抽取前的 dao 介面
package com.storm.user.dao;
import com.storm.base.dao.BaseDao;
import com.storm.user.entity.User;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UserDao extends BaseDao<User,Long> {
//A.把原來的通用的 CRUD 方法抽取到 BaseDao<E,PK extends Serializable>
//B.繼承 BaseDao<E,PK extends Serializable>
//C.所有基本的增刪改查都交給baseDao來處理.如果沒有新的業務,dao層程式碼基本是空
//D.以後有新增的業務,只需要加新增的業務程式碼。整個UserDao 就沒有多少程式碼了。
public List<User> selectUserByUserName();
}
<完>
相關推薦
十九、基於SSM框架,BaseDao --> dao層的抽取優化
通常來說,在一個專案中我們會使用到多個dao,比如在一個資訊管理系統中,有 UserDao/ MessageDao等; 每個 dao 都有相同的 CRUD 程式碼,每個 dao 去寫也是可以的,但是程式碼量會偏多,程式碼結構不夠好,顯得比較臃腫;實際上可以通過
十九、基於SSM框架,BaseDao --> dao層的抽取優化
通常來說,在一個專案中我們會使用到多個dao,比如在一個資訊管理系統中,有 UserDao/ MessageDao等; 每個 dao 都有相同的 CRUD 程式碼,每個 dao 去寫也是可以的,但是程式碼量會偏多,程式碼結構不夠好,顯得比較臃腫;實際上可以通過泛型來抽取出一個 Base
二十、基於SSM框架,BaseService --- service層的抽取
service層的抽取和dao層的抽取差不多相同,主要不同點是dao例項化的問題,需要在呼叫時傳入,並在BaseServiceImpl接收。 詳細的過程說明請參考dao層的抽取。 dao層的抽取:http://blog.csdn.net/u011997561/article/deta
三十九、python學習之Django框架(二):請求、URL路徑引數、查詢字串、請求體(表單,非表單)、請求頭
一、請求 1.flask中,利用HTTP協議想伺服器傳參的幾種途徑 1.1 提取URL的特定部分,可以在伺服器端的路由中用正則表示式擷取: 如:/weather/2018 //前端傳送請求: $.ajax({ url:'http://www.baidu.com/
十九、HTML5單頁框架View.js介紹 - 檢視跳轉(一)
檢視跳轉,是指使用者看到的介面切換為另一個介面的過程,亦即活動檢視轉移的過程。(同一時刻,只有一個檢視處於活動狀態。) 檢視跳轉時,View.js將自動調整位址列中的hash部分,使其始終反映出當前的活動檢視ID。如: http://wzhsoft.com/index.htm
基於proteus的51微控制器模擬例項七十九、8位數碼管驅動晶片max7221應用例項
1、MAX7221是整合式共陰極數碼管驅動晶片。可以用來驅動8位7段式數碼管,也可以驅動條形LED或者8*8LED點陣 微控制器僅僅需要3個IO口就可以控制MAX7221驅動8位數碼管。注意這裡的
基於ssm框架的個人部落格(5)--Dao層設計及測試
前臺的頁面完成了一部分,那麼是時候開發Dao層了,前面我們提到了mybatis的逆向工程,也展示了一些逆向生成的一些配置檔案,實體類......現在我們就基於ssm框架,對Dao進行開發,由於程式碼比較簡單,在此不做解釋,直接看註釋。 貼上程式碼 package test
基於proteus的51微控制器模擬例項五十九、1位數碼管顯示例項
1、數碼管實際上是由7個發光二極體組成一個8字形,另外一個發光二極體做成圓點型,這樣就構成了一個數碼管。所有的8個二級管的正極或者負極都連到一個公共端點上,對於公共端連在正極的數碼管,稱為共陽極數碼管,反之稱為共陰極數碼管。 根據數碼管的內部結構原理,可以很清楚的知道數
第二百六十九節,Tornado框架-Session登錄判斷
獲取系統當前時間 __main__ 參數 art emp exp 登錄密碼 字典 cnblogs Tornado框架-Session登錄判斷 Session需要結合cookie來實現 Session的理解 1、用戶登錄系統時,服務器端獲取系統當前時間,進行nd5加密
十九、動態加載腳本和樣式
所有 load 忽略 報錯 需求 flag mil ans n) 十九、動態加載腳本和樣式 本章主要講解上一章剩余的獲取位置的DOM方法、動態加載腳本和樣式。 1.元素位置 上一章已經通過幾組屬性可以獲取元素所需的位置,那麽這節課補充一個DOM的方法:getBoun
九、基於字符的I/O操作接口
reader 寫入 內容 網絡傳輸 編碼 writer 字符 read 但是 不管是磁盤還是網絡傳輸,最小的存儲單元都是字節,而不是字符,所以I/O操作的都是字節而不是字符,但是為什麽有操作字符的接口呢?這是因為在我們的程序中通常操作的都是字符的形式,為了操作方便當然要提供
基於ssm框架的論壇系統
star div batis pri 登錄 tps SSM框架 註冊 class 基於ssm框架的論壇系統 1.介紹 本論壇系統基於spring,spr
十九、壓縮打包介紹、gzip壓縮工具、把bzip2壓縮工具、xz壓縮工具
gzip bzip2 xz 十九、壓縮打包介紹、gzip壓縮工具、把bzip2壓縮工具、xz壓縮工具一、壓縮打包介紹windows下接觸的壓縮文件大多是.rar,.7z格式,Linux下,不能識別這種格式。.zip格式的文件在Windows和Linux下都能使用。壓縮文件,能節省磁盤空間,傳輸時能
基於SSM框架的博客系統(二)博主登錄功能
erl 映射 import incr pac 加密 actor gets AC 一、 準備 1.數據庫 創建表db_blogger: 1 DROP TABLE IF EXISTS `t_blogger`; 2 3 CREATE TABLE `t_bl
二十九、w查看系統負載、vmstat命令、top命令、sar命令、nload命令
w命令 vmstat命令 top命令 sar命令 nload命令 二十九、w查看系統負載、vmstat命令、top命令、sar命令、nload命令一、使用w查看系統負載 # w 06:10:09 up 6:20, 1 user, load average: 0.00, 0.01, 0
三十九、安裝PHP5、安裝PHP7
PHP5 PHP7 一、安裝PHP5PHP官網www.php.net。主流版本5.6,7.1。如果你的程序,PHP代碼能用PHP7就用7,不能用就用5,PHP7的性能有很大提升。# cd /usr/local/src/# wget http://cn2.php.net/distributions/ph
四十九、Nginx防盜鏈、Nginx訪問控制、Nginx解析PHP相關配置、Nginx代理
Nginx防盜鏈 Nginx訪問控制 Nginx解析PHP相關配置 Nginx代理 四十九、Nginx防盜鏈、Nginx訪問控制、Nginx解析PHP相關配置、Nginx代理一、Nginx防盜鏈 必須和“不記錄日誌和過期時間”結合在一起,因為它們同時用到了location。# v
十九、模塊和包
http 變化 圖片 發現 .py 一個 遇到 bsp pri 什麽叫做包:簡單點說就是帶_init_.py文件的文件夾就是包。當我們去調用這個包的時候其實是優先執行了包裏面的_init_文件。而包裏面的其他的py文件就是模塊 1.當我們需要直接調用某模塊的時候,而又不確定
Java基於ssm框架的restful應用開發
unicode ray -c mat after 內容 XP nco restful Java基於ssm框架的restful應用開發 好幾年都沒寫過java的應用了,這裏記錄下使用java ssm框架、jwt如何進行rest應用開發,文中會涉及到全局異常攔截處理、jwt校驗
六十九、for循環、while循環、break跳出循環、continue結束本次循環、exit退出整
for循環 while循環 break跳出循環 continue結束本次循環 exit退出整個腳本 六十九、for循環、while循環、break跳出循環、continue結束本次循環、exit退出整個腳本一、for循環 語法:for 變量名 in 條件; do …; done 案例1#