成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

你用過(guò)不寫(xiě)代碼就能完成一個(gè)簡(jiǎn)單模塊的組件么?

PiscesYE / 987人閱讀

開(kāi)篇四連問(wèn)
你是否懶得寫(xiě)普通的增刪改查方法?
你是否不喜歡代碼生成插件的重復(fù)代碼?
你是否渴望一個(gè)沒(méi)有冗余代碼的項(xiàng)目?
你是否渴望一行代碼都不用寫(xiě)就能完成一個(gè)簡(jiǎn)單的模塊?
組件由來(lái)
作為后端程序員,相信大家都寫(xiě)過(guò)以下幾種代碼:

根據(jù)主鍵查詢(xún)
多條件分頁(yè)查詢(xún)
插入
根據(jù)主鍵修改
根據(jù)主鍵刪除(單個(gè)或批量)
拋開(kāi)業(yè)務(wù)來(lái)說(shuō),這幾種代碼是我們項(xiàng)目中最最基本的代碼了,每一個(gè)項(xiàng)目中都會(huì)出現(xiàn)大量的這種代碼。那么你的項(xiàng)目中這種代碼你是怎么寫(xiě)的呢?

按照dao-service-controller的流程寫(xiě)?
copy一個(gè)現(xiàn)有的模塊然后修修改改?
使用代碼生成插件?
自己封裝一個(gè)組件?
對(duì)于我個(gè)人來(lái)說(shuō),就是從上方四個(gè)步驟走過(guò)來(lái)的。剛剛開(kāi)始學(xué)習(xí)Java的時(shí)候跟著老師的步驟從dao到service接口到實(shí)現(xiàn)類(lèi)再到controller。等到參加工作的時(shí)候就覺(jué)得沒(méi)什么大不了的了,直接copy后進(jìn)行修改。工作一段時(shí)間以后覺(jué)得自己寫(xiě)太累了然后就開(kāi)始使用代碼生成插件。

但是使用插件一段時(shí)間以后我覺(jué)得每個(gè)項(xiàng)目中存在的太多太多的冗余代碼了,單單進(jìn)行全局搜索時(shí)一個(gè)方法名出現(xiàn)了幾十次,如果有一個(gè)插件的代碼需要修改那么就要修改幾十次,稍不注意就給自己挖了個(gè)坑等等。然后呢我就在想,既然這些都是冗余方法那么我何不自己封裝一個(gè)組件把這些東西都抽象出來(lái)做一個(gè)組件。以后開(kāi)發(fā)時(shí)我只維護(hù)這一個(gè)組件,把剩余的精力放到業(yè)務(wù)代碼上呢?
我封裝的什么組件?
組件名稱(chēng):syj-minicode

當(dāng)一些單表的增刪改查時(shí)你只需要告訴前端來(lái)調(diào)用這幾個(gè)接口就行了
下方出現(xiàn)的entityName為當(dāng)前操作的對(duì)象名稱(chēng)或者數(shù)據(jù)庫(kù)表名稱(chēng)(注意命名規(guī)范要符合駝峰命名法,例如:UserOrder或者user_order都可以) 刪除接口為物理刪除,邏輯刪除請(qǐng)使用update接口

根據(jù)主鍵查詢(xún)對(duì)象

@RequestMapping(value = "/syj-api/{entityName}/{id}", method = RequestMethod.GET)
分頁(yè)查詢(xún)

@RequestMapping(value = "/syj-api/{entityName}/page", method = RequestMethod.POST)
@RequestBody: GridPageRequest
這里的GridPageRequest為分頁(yè)查詢(xún)的條件,看一下它的組成元素

/**

查詢(xún)關(guān)鍵字Map

*/
private Map searchMap;
/**

模糊查詢(xún)關(guān)鍵字Map

*/
private Map likeSearchMap;
/**

排序關(guān)鍵字Map

*/
private Map orderMap;
/**

分組關(guān)鍵字?jǐn)?shù)組

*/
private String[] groupArray;

private int pageNum;
private int pageSize;
前端查詢(xún)時(shí)只需要按照查詢(xún)條件組裝GridPageRequest對(duì)象就可以了

插入

@RequestMapping(value = "/syj-api/{entityName}/insert", method = RequestMethod.POST)
@RequestBody: Object(待插入對(duì)象)
根據(jù)主鍵進(jìn)行更新

@RequestMapping(value = "/syj-api/{entityName}/update", method = RequestMethod.PUT)
@RequestBody: Object(待更新對(duì)象)
根據(jù)主鍵進(jìn)行刪除

@RequestMapping(value = "/syj-api/{entityName}/{id}", method = RequestMethod.DELETE)
批量刪除

@RequestMapping(value = "/syj-api/{entityName}/deleteByIds", method = RequestMethod.DELETE)
@RequestBody: List ids(待刪除主鍵列表)
擴(kuò)展接口
因?yàn)槟J(rèn)情況下單個(gè)對(duì)象查詢(xún)、修改、刪除所依據(jù)的主鍵的字段名使用的都是"id",但是很可能有的項(xiàng)目使用的是userId、orderId、roleId等主鍵,如果你的項(xiàng)目符合這個(gè)條件注入下方這個(gè)bean。

@Bean
public IdField idField() {

Map map=new ConcurrentHashMap<>();
map.put("user","userId");//key的名稱(chēng)為實(shí)體名稱(chēng)或數(shù)據(jù)庫(kù)表名稱(chēng),value為主鍵屬性名
map.put("order","orderId");
map.put("role","roleId");
IdField idField=new IdField();
idField.setMap(map);
return idField;

}
有的項(xiàng)目在進(jìn)行插入和更新時(shí)會(huì)加入創(chuàng)建人和修改人等信息。如果有此需求請(qǐng)按照如下方式調(diào)用

插入擴(kuò)展
創(chuàng)建一個(gè)名為InsertExtend的bean并實(shí)現(xiàn)DefaultExtend接口

@Component
public class InsertExtend implements ExtendInterface{

@Override
public Map exectue() {
    Map map=new HashMap<>();
    map.put("createTime", System.currentTimeMillis());
    map.put("createBy", "創(chuàng)建人id");
    map.put("createUserName", "創(chuàng)建人名稱(chēng)");
    return map;
}

}
更新擴(kuò)展
創(chuàng)建一個(gè)名為UpdateExtend的bean并實(shí)現(xiàn)DefaultExtend接口

@Component
public class UpdateExtend implements ExtendInterface{

@Override
public Map exectue() {
    Map map=new HashMap<>();
    map.put("updateTime", System.currentTimeMillis());
    map.put("updateBy", "修改人id");
    map.put("updateUserName", "修改人名稱(chēng)");
    return map;
}

}
還有沒(méi)有更靈活的使用方式?
上方使用方式其實(shí)是直接抽象到了controller層,解決一般的需要是沒(méi)問(wèn)題的,但是我們是有業(yè)務(wù)邏輯的,那么存在業(yè)務(wù)邏輯的情況下如何使用呢?
你可以在處理完業(yè)務(wù)邏輯后在service中調(diào)用

初始化

private BaseService getUserBaseService(){

    return ServiceBeanFactory.getBean("User");
}

根據(jù)id查詢(xún)

Map userMap=getUserBaseService().selectOneById("115");
User user=(User) BeanMapUtil.mapToBean(map,User.class);
根據(jù)條件查詢(xún)列表(相信你已經(jīng)知道了gridPageRequest對(duì)象如何組裝)

List> userMaps=getUserBaseService().selectBySelective(gridPageRequest);
for (Map map:userMaps){

User user=(User) BeanMapUtil.mapToBean(map,User.class);    

}
插入

getUserBaseService().insertSelective(user);
更新

getUserBaseService().updateByIdSelective(user);
刪除

getUserBaseService().deleteById("115");
批量刪除

List list=new ArrayList<>();
list.add("115");
list.add("116");
list.add("117");
getUserBaseService().deleteByIds(list);
組件好用么?
看完我的介紹你覺(jué)得這個(gè)組件能滿(mǎn)足你的基本需要么,如果可以話(huà)請(qǐng)移步下方的GitHub鏈接看一下這個(gè)組件的源碼寫(xiě)的如何以及如何使用吧。

https://github.com/2388386839...

本文出自http://zhixiang.org.cn,轉(zhuǎn)載請(qǐng)...。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/71726.html

相關(guān)文章

  • 再見(jiàn),Python!你好,Go語(yǔ)言

    摘要:語(yǔ)言誕生于谷歌,由計(jì)算機(jī)領(lǐng)域的三位宗師級(jí)大牛和寫(xiě)成。作者華為云技術(shù)宅基地鏈接谷歌前員工認(rèn)為,比起大家熟悉的,語(yǔ)言其實(shí)有很多優(yōu)良特性,很多時(shí)候都可以代替,他已經(jīng)在很多任務(wù)中使用語(yǔ)言替代了。 Go 語(yǔ)言誕生于谷歌,由計(jì)算機(jī)領(lǐng)域的三位宗師級(jí)大牛 Rob Pike、Ken Thompson 和 Robert Griesemer 寫(xiě)成。由于出身名門(mén),Go 在誕生之初就吸引了大批開(kāi)發(fā)者的關(guān)注。誕生...

    zhaot 評(píng)論0 收藏0
  • 邁出全棧第一步,vue+node+mysql獨(dú)立完成前后端分離增刪改查流程

    摘要:本使用創(chuàng)建本地服務(wù)器,在就能完成全部流程,并不需要線(xiàn)上服務(wù)器。路徑要與后端接口一致。后端返回成功后,前端數(shù)據(jù)中對(duì)應(yīng)的元素也要?jiǎng)h掉,更新視圖。控制器里拿一個(gè)方法出來(lái)說(shuō)一下吧,完整的代碼都在。讀取操作完成后調(diào)用釋放連接。 寫(xiě)在前面 本文只是本人學(xué)習(xí)過(guò)程的一個(gè)記錄,并不是什么非常嚴(yán)謹(jǐn)?shù)慕坛?,希望和大家一起共同進(jìn)步。也希望大家能指出我的問(wèn)題。適合有一定基礎(chǔ),志在全棧的前端初學(xué)者學(xué)習(xí),從點(diǎn)擊按鈕...

    fsmStudy 評(píng)論0 收藏0
  • 微信小程序開(kāi)發(fā)小總結(jié)

    摘要:框架這部分是小程序開(kāi)發(fā)的核心,小程序采用視圖和邏輯層代碼相分離的結(jié)構(gòu),如果你用過(guò)這部分也不難理解,但是也有一些區(qū)別。工具這部分沒(méi)有什么好說(shuō)的,微信開(kāi)發(fā)開(kāi)始還是用微信自己的開(kāi)發(fā)工具比較方便。 小程序開(kāi)發(fā)文檔使用說(shuō)明 小程序的文檔分為 簡(jiǎn)易教程、框架、組件、API?、工具h(yuǎn)ttps://developers.weixin.qq.... 簡(jiǎn)易教程---介紹小程序開(kāi)發(fā)的一些基本情況 開(kāi)發(fā)方式...

    niuxiaowei111 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

PiscesYE

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<