chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

寫一個比ChatGPT還牛的CRUD代碼生成器

jf_ro2CN3Fa ? 來源:稀土掘金 ? 2023-02-20 13:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近在做一個項(xiàng)目,需要新建20多張表

相信大多數(shù)同學(xué)應(yīng)該和我一樣,都是比較討厭創(chuàng)建新表這個工作的,因?yàn)槊縿?chuàng)建一張表,都要去創(chuàng)建實(shí)體類、創(chuàng)建增刪改查的接口、編寫增刪改查的SQL代碼等等,把這些事情做完,2個小時也就過去了

我就在思考啊,每一張表,就要耗費(fèi)兩個小時,20多張表,那就是40多個小時,一周的時間就這樣過去了。

思考

這誰受得了呀,所以我打算寫一個工具,把這些代碼都自動生成出來!

代碼都自動生成出來

在連續(xù)爆肝了5個晚上之后,我做出了這款自動生成業(yè)務(wù)代碼的工具!

9418f320-b04f-11ed-bfe3-dac502259ad0.jpg

自動生成業(yè)務(wù)代碼

我把它放在了我的工具站上,大家可以訪問這個域名直接使用https://utilsbox.cn/?app=bizcode

使用演示

下面給大家演示一下

假設(shè)我們現(xiàn)在創(chuàng)建一個商品

首先填寫表名和表的中文名稱

然后我們添加商品表對應(yīng)的字段,這些操作和我們?nèi)粘J褂玫臄?shù)據(jù)庫工具差不多

把字段填寫好了之后,點(diǎn)擊“一鍵生成代碼”

942cbaea-b04f-11ed-bfe3-dac502259ad0.jpg

完成表信息編輯

高潮的地方來了

DB層、業(yè)務(wù)層、甚至是controller層的代碼,工具都幫我們自動生成了!

來看下代碼,建表sql、增刪改查sql、表對應(yīng)的實(shí)體類、DB層的接口類、業(yè)務(wù)層的實(shí)體類、業(yè)務(wù)層的接口類、業(yè)務(wù)接口的實(shí)現(xiàn)類、業(yè)務(wù)層實(shí)體類和db層實(shí)體類的轉(zhuǎn)換器,最后是controller層,這些代碼全都幫我們生成好了。

943eb524-b04f-11ed-bfe3-dac502259ad0.gif

代碼全都幫我們生成好了

這是什么概念呢

現(xiàn)在我們只需要把這些代碼拷貝到項(xiàng)目里,簡單設(shè)置一下類的引用,增刪改查這些基本功能,就已經(jīng)可以直接給前端去調(diào)用了。

CRUD

很多同學(xué)可能會問,如果是現(xiàn)有的數(shù)據(jù)表,再來這里添加一次感覺太麻煩了

這個問題我也遇到了,所以我做了一個識別建表SQL的功能,常見的數(shù)據(jù)庫工具對于已經(jīng)創(chuàng)建好的表,都提供建表語句的復(fù)制功能,只需要把建表SQL粘貼到這個文本框里。

點(diǎn)擊“識別”按鈕,這個SQL的信息會自動識別過來,這時候只需要把表的中文名稱填寫上去,點(diǎn)擊“一鍵生成代碼”,就可以馬上得到這個表的業(yè)務(wù)代碼。

94ecd6c2-b04f-11ed-bfe3-dac502259ad0.jpg

業(yè)務(wù)代碼生成器

通用性的思考

不知道大家覺得怎么樣哈,如果只是我自己用,我覺著已經(jīng)非常好了,但既然是開放出來給大家用,通用性肯定還是不夠的。

因?yàn)楝F(xiàn)在看到的這一套自動生成的代碼,可能只是適合我,但不同的人、不同的公司,它們項(xiàng)目結(jié)構(gòu)的分層、代碼的細(xì)節(jié),都是不一樣的

所以,我還開發(fā)了代碼模版配置的功能

點(diǎn)擊“代碼模版配置”按鈕,在這個彈窗里,我們可以新增、刪除代碼的分類。同樣的,也可以新增、刪除和編輯具體的代碼模版。

95017136-b04f-11ed-bfe3-dac502259ad0.jpg

代碼模版

代碼生成的原理

在說代碼模版具體怎么配置之前,先給大家講一下代碼自動生成的原理

它由代碼模版和動態(tài)參數(shù)組成,核心就是匹配 - 替換

首先,工具提供了很多動態(tài)參數(shù),這些動態(tài)參數(shù),對應(yīng)的是我們填寫的表名、字段名等等這些信息的原始值,或者處理過后的值。

然后,代碼模版由用戶自行定義,在代碼的關(guān)鍵位置,插入動態(tài)參數(shù),即可形成一份代碼模版。

最后,工具通過匹配和替換動態(tài)參數(shù),最終生成了代碼。

理論上,不論什么語言,你都可以配置專屬于你自己的代碼模版。

舉個簡單的栗子:

我們配置了一份這樣的代碼模版,如下:

/**
*$table_desc$Model模型
*Createdby創(chuàng)建人on$current_time$.
*/
publicclass$table_name_hump_A$ModelextendsToString{
}

可以看到,模版里分別使用了$table_desc$(表中文名)、$current_time$(當(dāng)前時間)、$table_name_hump_A$(表名轉(zhuǎn)首字母大寫駝峰) 這三個動態(tài)參數(shù)。

當(dāng)我們設(shè)置 表名 = goods_order、表中文名 = 商品訂單 時,代碼生成的結(jié)果如下所示:

/**
*商品訂單Model模型
*Createdby創(chuàng)建人on2023-02-051732.
*/
publicclassGoodsOrderModelextendsToString{
}

動態(tài)參數(shù)部分,全部替換成了我們輸入的表信息。

最后希望這個項(xiàng)目對大家有用,之后我會開發(fā)更多有意思的項(xiàng)目。

由于這個項(xiàng)目都是晚上加班肝出來的,可能會存在一些BUG,發(fā)現(xiàn)了我會盡快修復(fù)的,也請大家多多包涵。

代碼模版參考

以下是當(dāng)前工具里默認(rèn)的代碼模版,你可以通過參考這些模版,舉一反三,配置出專屬于你自己的代碼模版。

工具提供了模版的導(dǎo)入和導(dǎo)出功能,如果你創(chuàng)建好了一份非常滿意的模版,可以導(dǎo)出,然后發(fā)給你的同事直接使用,這樣它就不用重復(fù)創(chuàng)建了,你也可以忽悠你的同事來創(chuàng)建,然后分享給你。

建表SQL模版

CREATETABLE`$table_name$`(
$create_table_field_list$
PRIMARYKEY(`$primary_key$`)
)ENGINE=$db_engine$DEFAULTCHARSET=$db_encoded$;

實(shí)體類模版

主體

/**
*$table_desc$DTO模型
*Createdby創(chuàng)建人on$current_time$.
*/
publicclass$table_name_hump_A$DO{
$member_param_list$
$get_set_method_list$
}

成員代碼塊 成員變量列表(member_param_list)

/**$field_comment$*/
private$field_type_java$$field_name_hump$;

成員代碼塊 GetSet方法列表(get_set_method_list)

public$field_type_java$get$field_name_hump_A$(){
return$field_name_hump$;
}

publicvoidset$field_name_hump_A$($field_type_java$$field_name_hump$){
this.$field_name_hump$=$field_name_hump$;
}

接口類模版(DB層)

importorg.apache.ibatis.annotations.Mapper;
importorg.apache.ibatis.annotations.Param;

importjava.util.List;
importjava.util.Map;

/**
*$table_desc$DB接口
*Createdby創(chuàng)建人on$current_time$
*/
@Mapper
publicinterface$table_name_hump_A$DAO{

/**
*添加
*@paramdata
*return影響行數(shù)
*/
intinsert($table_name_hump_A$DOdata);

/**
*修改
*@paramdata
*return影響行數(shù)
*/
intupdate($table_name_hump_A$DOdata);

/**
*分頁查詢
*@paramparam
*return結(jié)果列表
*/
List<$table_name_hump_A$DO>pageQuery(Mapparam);

/**
*查詢count
*@paramparam
*returncount條數(shù)
*/
LongpageQueryCount(Mapparam);

/**
*根據(jù)ID查詢
*@paramid
*return結(jié)果DO對象
*/
$table_name_hump_A$DOqueryById(@Param("$primary_key_hump$")$primary_key_type_java$$primary_key_hump$);

/**
*根據(jù)ID查詢(帶鎖)
*@paramid
*return結(jié)果DO對象
*/
$table_name_hump_A$DOqueryByIdLock(@Param("$primary_key_hump$")$primary_key_type_java$$primary_key_hump$);
}

CRUD SQL模版


 




INSERTINTO$table_name$($insert_field_name_list$)
VALUES($insert_field_value_list$);



UPDATE$table_name$SET
$update_field_list$
WHERE$primary_key$=#{$primary_key_hump$};



SELECT$select_field_list$FROM$table_name$
WHERE1=1
$while_field_list$

ORDERBY$primary_key$DESC


LIMIT#{offset},#{rows}




SELECTCOUNT(1)astotalFROM$table_name$
WHERE1=1
$while_field_list$



SELECT$select_field_list$FROM$table_name$
WHERE$primary_key$=#{$primary_key_hump$};



SELECT$select_field_list$FROM$table_name$
WHERE$primary_key$=#{$primary_key_hump$}FORUPDATE;



模型轉(zhuǎn)換器模版

不同層級間,可能會有不同的實(shí)體類,那么它們相互之間的數(shù)據(jù)轉(zhuǎn)換,也是一個重復(fù)且浪費(fèi)時間的工作,所以也可以配置一個模版。

importorg.springframework.util.CollectionUtils;

importjava.util.ArrayList;
importjava.util.List;

/**
*$table_desc$模型轉(zhuǎn)換器
*Createdby創(chuàng)建人on$current_time$
*/
publicclass$table_name_hump_A$Converter{

/**
*dto轉(zhuǎn)do
*@paramsource
*returndo模型
*/
publicstatic$table_name_hump_A$DOtoDo($table_name_hump_A$DTOsource){
$table_name_hump_A$DOtarget=new$table_name_hump_A$DO();
$converter_source_to_target_params_list$
returntarget;
}

/**
*do轉(zhuǎn)dto
*@paramsource
*returndto模型
*/
publicstatic$table_name_hump_A$DTOtoDto($table_name_hump_A$DOsource){
$table_name_hump_A$DTOtarget=new$table_name_hump_A$DTO();
$converter_source_to_target_params_list$
returntarget;
}

/**
*dolist轉(zhuǎn)dto
*@paramdata
*returnlistdto模型
*/
publicstaticList<$table_name_hump_A$DTO>toDtoList(List<$table_name_hump_A$DO>data){
if(CollectionUtils.isEmpty(data)){
returnnull;
}
List<$table_name_hump_A$DTO>list=newArrayList<>();
for($table_name_hump_A$DOitem:data){
list.add($table_name_hump_A$Converter.toDto(item));
}
returnlist;
}
}

成員代碼塊 模型轉(zhuǎn)換器參數(shù)列表(converter_source_to_target_params_list)

target.set$field_name_hump_A$(source.get$field_name_hump_A$());

業(yè)務(wù)接口實(shí)現(xiàn)類模版

importcom.alibaba.fastjson.JSONObject;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importorg.springframework.stereotype.Service;

/**
*$table_desc$業(yè)務(wù)實(shí)現(xiàn)
*Createdby創(chuàng)建人on$current_time$
*/
@Service
publicclass$table_name_hump_A$ServiceImplimplements$table_name_hump_A$Service{

privatestaticfinalLoggerLOGGER=LoggerFactory.getLogger($table_name_hump_A$ServiceImpl.class);

@Resource
private$table_name_hump_A$DAO$table_name_hump$DAO;

@Override
publicCommonResultcreate(JSONObjectrequest){

//入?yún)⑥D(zhuǎn)成對應(yīng)類型
CommonAssert.isNoEmptyObj(request,"請求參數(shù)不可空");
$table_name_hump_A$DTOdto=JSON.toJavaObject(request,$table_name_hump_A$DTO.class);

//參數(shù)校驗(yàn)
$biz_check_required_params$

//轉(zhuǎn)成do模型
$table_name_hump_A$DOdataDo=$table_name_hump_A$Converter.toDo(dto);

//落庫
intcount=$table_name_hump$DAO.insert(dataDo);
CommonAssert.isTrue(count>0,"創(chuàng)建失敗,請重試");

//返回創(chuàng)建成功的ID數(shù)據(jù)
returnnewCommonResult(dataDo.get$primary_key_hump_A$());
}

@Override
publicCommonResultmodify(JSONObjectrequest){

//入?yún)⑥D(zhuǎn)成對應(yīng)類型
CommonAssert.isNoEmptyObj(request,"請求參數(shù)不可空");
$table_name_hump_A$DTOdto=JSON.toJavaObject(request,$table_name_hump_A$DTO.class);

//參數(shù)校驗(yàn)
$biz_check_required_params$

//轉(zhuǎn)成do模型
$table_name_hump_A$DOdataDo=$table_name_hump_A$Converter.toDo(dto);

//落庫
intcount=$table_name_hump$DAO.update(dataDo);
CommonAssert.greaterThanZero(count,"修改失敗,請重試");

//返回修改成功的ID數(shù)據(jù)
returnnewCommonResult(dataDo.get$primary_key_hump_A$());
}

@Override
publicCommonResultpageQuery(JSONObjectrequest){

//入?yún)⒒拘r?yàn)
CommonAssert.isNoEmptyObj(request,"請求參數(shù)不可空");

//分頁信息校驗(yàn)
PaginationDOpagination=PaginationDO.setRequestOffsetAndRows(request);
CommonAssert.isNoEmptyObj(pagination,"分頁參數(shù)$pageIndex、$pageSize不可空");
CommonAssert.isTrue(pagination.getPageSize()<=?100,?"單次查詢條數(shù)不可超過100條");

????????//?取分頁列表數(shù)據(jù)
????????List<$table_name_hump_A$DO>dbResult=$table_name_hump$DAO.pageQuery(request);

//取count數(shù)據(jù)
longcount=$table_name_hump$DAO.pageQueryCount(request);

//空返回
if(CollectionUtils.isEmpty(dbResult)){
returnnewCommonResult(newPaginationResult(null,request,count));
}

//模型轉(zhuǎn)換
List<$table_name_hump_A$DTO>list=$table_name_hump_A$Converter.toDtoList(dbResult);

//返回分頁結(jié)果
returnnewCommonResult(newPaginationResult(list,request,count));
}

@Override
publicCommonResultqueryById(JSONObjectrequest){

//取入?yún)?CommonAssert.isNoEmptyObj(request,"請求參數(shù)不可空");

//根據(jù)ID獲取數(shù)據(jù)
$primary_key_type_java$$primary_key_hump$=request.get$primary_key_type_java$("$primary_key_hump$");
CommonAssert.isNoEmptyObj($primary_key_hump$,"參數(shù)錯誤,無法執(zhí)行查詢");
$table_name_hump_A$DOdbResult=$table_name_hump$DAO.queryById($primary_key_hump$);

//未查詢到結(jié)果,返回
if(null==dbResult){
returnnewCommonResult();
}

//模型轉(zhuǎn)換
$table_name_hump_A$DTOresult=$table_name_hump_A$Converter.toDto(dbResult);

//返回結(jié)果對象
returnnewCommonResult(result);
}
}

成員代碼塊 必填項(xiàng)業(yè)務(wù)校驗(yàn)(biz_check_required_params)

CommonAssert.$java_type_adapter_assert_method$(dto.get$field_name_hump_A$(),"$field_comment$不可空");

Controller模版

importcom.alibaba.fastjson.JSONObject;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importorg.springframework.web.bind.annotation.*;

importjavax.annotation.Resource;

/**
*$table_desc$HTTP請求控制器
*Createdby創(chuàng)建人on$current_time$.
*/
@CrossOrigin
@RestController
@RequestMapping(value="/$table_name_hump$/")
publicclass$table_name_hump_A$Controller{

privatestaticfinalLoggerLOGGER=LoggerFactory.getLogger($table_name_hump_A$Controller.class);

@Resource
private$table_name_hump_A$Service$table_name_hump$Service;

/**
*創(chuàng)建
*@paramrequest
*@return
*/
@RequestMapping(value="create.json",method={RequestMethod.GET,RequestMethod.POST})
@ResponseBody
publicObjectcreate(@RequestBodyJSONObjectrequest){
returnCommonTemplate.run(LOGGER,newCommonTemplate(){
@Override
protectedObjectbusiness(){
return$table_name_hump$Service.create(request);
}
},request);
}

/**
*修改
*@paramrequest
*@return
*/
@RequestMapping(value="modify.json",method={RequestMethod.GET,RequestMethod.POST})
@ResponseBody
publicObjectmodify(@RequestBodyJSONObjectrequest){
returnCommonTemplate.run(LOGGER,newCommonTemplate(){
@Override
protectedObjectbusiness(){
return$table_name_hump$Service.modify(request);
}
},request);
}

/**
*分頁查詢
*@paramrequest
*@return
*/
@RequestMapping(value="pageQuery.json",method={RequestMethod.GET,RequestMethod.POST})
@ResponseBody
publicObjectpageQuery(@RequestBodyJSONObjectrequest){
returnCommonTemplate.run(LOGGER,newCommonTemplate(){
@Override
protectedObjectbusiness(){
return$table_name_hump$Service.pageQuery(request);
}
},request);
}

/**
*通過主鍵查詢
*@paramrequest
*@return
*/
@RequestMapping(value="queryById.json",method={RequestMethod.GET,RequestMethod.POST})
@ResponseBody
publicObjectqueryById(@RequestBodyJSONObjectrequest){
returnCommonTemplate.run(LOGGER,newCommonTemplate(){
@Override
protectedObjectbusiness(){
return$table_name_hump$Service.queryById(request);
}
},request);
}
}

動態(tài)參數(shù)

原始表名 $table_name$

?

用戶輸入的表名,不做任何處理。

?

表名駝峰首字母小寫 $table_name_hump$

?

用戶輸入的表名,經(jīng)過駝峰處理。例如輸入:goods_order ,輸出:goodsOrder

?

表名駝峰首字母大寫 $table_name_hump_A$

?

用戶輸入的表名,經(jīng)過駝峰處理。例如輸入:goods_order ,輸出:GoodsOrder

?

原始字段名 $field_name$

?

用戶輸入的表字段名,不做任何處理。

?

字段名駝峰首字母小寫 $field_name_hump$

?

用戶輸入的表字段名,經(jīng)過駝峰處理。例如輸入:order_number ,輸出:orderNumber

?

字段名駝峰首字母大寫 $field_name_hump_A$

?

用戶輸入的表字段名,經(jīng)過駝峰處理。例如輸入:order_number ,輸出:OrderNumber

?

字段說明 $field_comment$

?

用戶輸入的表字段說明,不做任何處理。

?

字段數(shù)據(jù)類型(對應(yīng)DB)$field_type_db$

?

用戶選擇的表字段類型,不做任何處理。

?

字段數(shù)據(jù)類型(對應(yīng)Java)$field_type_java$

?

用戶選擇的表字段類型,會自動匹配對應(yīng)的Java類型。例如輸入:VARCHAR(),輸出:String

?

主鍵字段名 $primary_key$

?

用戶選擇的主鍵字段,不做任何處理。例如用戶定義的主鍵是id,那么輸出就是:id

?

主鍵字段名駝峰首字母小寫 $primary_key_hump$

?

用戶選擇的主鍵字段,經(jīng)過駝峰處理。例如輸入:order_number ,輸出:orderNumber

?

主鍵字段名駝峰首字母大寫 $primary_key_hump_A$

?

用戶選擇的主鍵字段,經(jīng)過駝峰處理。例如輸入:order_number ,輸出:OrderNumber

?

主鍵字段數(shù)據(jù)類型(對應(yīng)Java)$primary_key_type_java$

?

用戶選擇的主鍵字段類型,會自動匹配對應(yīng)的Java類型。例如輸入:VARCHAR(),輸出:String

?

插入數(shù)據(jù)sql,字段名列表 $insert_field_name_list$

?

例如表中有三個字段:id(主鍵)、goods_name、price,輸出:goods_name,price 。會自動排除主鍵 不僅插入數(shù)據(jù)時可用,任何需要排除ID,然后使用英文逗號拼接表所有字段信息的地方,都可以使用它

?

插入數(shù)據(jù)sql,字段值列表 $insert_field_value_list$

?

例如表中有三個字段:id(主鍵)、goods_name、price,輸出:#{goodsName},#{price} 。會自動排除主鍵 不僅插入數(shù)據(jù)時可用,任何需要排除ID,然后使用英文逗號拼接表所有字段信息的地方,都可以使用它

?

修改數(shù)據(jù)sql,字段名列表 $update_field_list$

?

例如表中有三個字段:id(主鍵)、goods_name、price 輸出(會自動換行,會攜帶以下縮進(jìn),會自動排除主鍵):

?

goods_name=#{goodsName},
price=#{price}

查詢數(shù)據(jù)sql,字段名列表 $select_field_list$

?

例如表中有三個字段:id(主鍵)、goods_name、price,輸出:id,goods_name,price 。帶主鍵

?

whele字段條件sql,字段名列表 $whele_field_list$

?

例如表中有三個字段:id(主鍵)、goods_name、price, 輸出(會自動換行,會攜帶以下縮進(jìn)):

?


ANDid=#{id}


ANDgoods_name=#{goodsName}


ANDprice=#{price}

創(chuàng)建表-表字段列表 $create_table_field_list$

?

例如表中有三個字段:id(自增主鍵)、goods_name、price 輸出(會自動換行,會攜帶以下縮進(jìn)):

?

`id`INT(11)NOTNULLAUTO_INCREMENT,
`goods_name`VARCHAR(128)NOTNULLDEFAULT'NULL',
`price`DECIMAL(10,2)NOTNULLDEFAULT'NULL'

當(dāng)前時間 $current_time$

?

自動獲取當(dāng)前時間,格式:yyyy-MM-DD hhss,示例值:2023-02-05 1718

?

自動根據(jù)數(shù)據(jù)類型,匹配斷言方法 $java_type_adapter_assert_method$

?

對于Java數(shù)據(jù)類型等于String的字段,使用isNoBlankStr方法,其他的類型都使用isNoEmptyObj方法 這是一個定制化很高的動態(tài)參數(shù),可忽略它。

?

動態(tài)代碼塊

動態(tài)代碼塊由用戶自行定義,代碼塊中也可以設(shè)置動態(tài)參數(shù),目前僅提供4種明確的動態(tài)代碼塊

成員變量列表 $member_param_list$

例如表中有三個字段:id(主鍵)、goods_name、price

假設(shè)用戶定義了如下代碼塊內(nèi)容:

/**$field_comment$*/
private$field_type_java$$field_name_hump$;

輸出(會自動根據(jù)字段數(shù)量,累加輸出自定義代碼塊內(nèi)容):

/**id*/
privateIntegerid;
/**商品名稱*/
privateStringgoodsName;
/**商品價格*/
privateStringprice;

GetSet方法列表 $get_set_method_list$

例如表中有三個字段:id(主鍵)、goods_name、price

假設(shè)用戶定義了如下代碼塊內(nèi)容:

public$field_type_java$get$field_name_hump_A$(){
return$field_name_hump$;
}

publicvoidset$field_name_hump_A$($field_type_java$$field_name_hump$){
this.$field_name_hump$=$field_name_hump$;
}

輸出(會自動根據(jù)字段數(shù)量,累加輸出自定義代碼塊內(nèi)容):

publicIntegergetId(){
returnid;
}

publicvoidsetId(Integerid){
this.id=id;
}

publicStringgetGoodsName(){
returngoodsName;
}

publicvoidsetGoodsName(StringgoodsName){
this.goodsName=goodsName;
}

publicStringgetPrice(){
returnprice;
}

publicvoidsetPrice(Stringprice){
this.price=price;
}

模型轉(zhuǎn)換器參數(shù)列表 $converter_source_to_target_params_list$

例如表中有三個字段:id(主鍵)、goods_name、price

假設(shè)用戶定義了如下代碼塊內(nèi)容:

target.set$field_name_hump_A$(source.get$field_name_hump_A$());

輸出(會自動根據(jù)字段數(shù)量,累加輸出自定義代碼塊內(nèi)容):

target.setId(source.getId());
target.setGoodsName(source.getGoodsName());
target.setPrice(source.getPrice());

必填項(xiàng)業(yè)務(wù)校驗(yàn) $biz_check_required_params$

例如表中有三個字段:id(主鍵)、goods_name、price

假設(shè)用戶定義了如下代碼塊內(nèi)容:

CommonAssert.$java_type_adapter_assert_method$(dto.get$field_name_hump_A$(),"$field_comment$不可空");

輸出(會自動根據(jù)字段數(shù)量,累加輸出自定義代碼塊內(nèi)容):

CommonAssert.isNoBlankStr(dto.getGoodsName(),"goodsName不可空");
CommonAssert.isNoBlankStr(dto.getPrice(),"price不可空");






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 轉(zhuǎn)換器
    +關(guān)注

    關(guān)注

    27

    文章

    9028

    瀏覽量

    151581
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    783

    瀏覽量

    45050
  • 代碼生成器
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    9358

原文標(biāo)題:非低代碼,我寫了一個比ChatGPT還牛的CRUD代碼生成器

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    介紹下ABOV提供的代碼生成器

    的開發(fā),下面介紹下ABOV提供的代碼生成器,絲毫不輸CUBEMX,且ABOV單片機(jī)基本都支持keil開發(fā)環(huán)境。。2. ABOV的代碼生成器
    發(fā)表于 11-19 08:06

    python生成器

    了,但是函數(shù)并沒有結(jié)束請看如下代碼,我定義了 generator_factory 函數(shù),當(dāng)我執(zhí)行 gen = generator_factory() 時,gen 就是
    發(fā)表于 02-24 15:56

    利用LabVIEW代碼生成器簡化應(yīng)用項(xiàng)目

    利用LabVIEW代碼生成器簡化應(yīng)用項(xiàng)目
    發(fā)表于 02-26 14:01 ?24次下載
    利用LabVIEW<b class='flag-5'>代碼</b><b class='flag-5'>生成器</b>簡化應(yīng)用項(xiàng)目

    代碼生成器的應(yīng)用

    jeesite框架代碼生成器,可以很方便的生成代碼,挺不錯的。
    發(fā)表于 01-14 15:19 ?0次下載

    數(shù)碼管代碼生成器

    數(shù)碼管代碼生成器,迅速生成數(shù)碼管的相應(yīng)代碼
    發(fā)表于 04-25 10:54 ?44次下載

    STM32庫函數(shù)代碼自動生成器V1.2

    stm32庫函數(shù)代碼自動生成器是STM32學(xué)習(xí)的小工具。 stm32庫函數(shù)代碼自動生成器可以根據(jù)你的配置生成相應(yīng)的庫函數(shù)
    發(fā)表于 06-17 17:55 ?0次下載

    STM32庫函數(shù)代碼自動生成器正式版

    STM32庫函數(shù)代碼自動生成器正式版,感興趣的可以看看。
    發(fā)表于 07-13 16:55 ?0次下載

    STM32庫函數(shù)代碼自動生成器正式版

    STM32庫函數(shù)代碼自動生成器正式版 STM32庫函數(shù)代碼自動生成器正式版
    發(fā)表于 07-25 18:52 ?0次下載

    進(jìn)位保留加法陣列的HDL代碼生成器

    進(jìn)位保留加法陣列的HDL代碼生成器,感興趣的小伙伴們可以看看。
    發(fā)表于 08-08 18:20 ?10次下載

    python生成器是什么

    python生成器 1. 什么是生成器? 生成器(英文名 Generator ),是可以像迭代器那樣使用for循環(huán)來獲取元素的函數(shù)。
    的頭像 發(fā)表于 02-24 15:53 ?3933次閱讀

    如何擴(kuò)展自定義功能塊,以及代碼生成器的用法

    被動代碼生成器 目標(biāo)代碼生成之后,需要進(jìn)行修改和完善,然后獨(dú)立發(fā)展和維護(hù),與代碼生成器再與關(guān)系。
    的頭像 發(fā)表于 11-02 13:26 ?1454次閱讀

    將使用代碼生成器生成的項(xiàng)目移植到與智能配置器起使用的項(xiàng)目

    將使用代碼生成器生成的項(xiàng)目移植到與智能配置器起使用的項(xiàng)目
    發(fā)表于 01-11 19:00 ?0次下載
    將使用<b class='flag-5'>代碼</b><b class='flag-5'>生成器</b><b class='flag-5'>生成</b>的項(xiàng)目移植到與智能配置器<b class='flag-5'>一</b>起使用的項(xiàng)目

    個性化地定制自己的uvm代碼生成器模板和腳本

    使用uvm代碼生成器創(chuàng)建基本的uvm驗(yàn)證環(huán)境框架,然后丟棄代碼生成器模板并擴(kuò)展和維護(hù)生成出來的代碼
    的頭像 發(fā)表于 05-14 16:51 ?2605次閱讀
    個性化地定制自己的uvm<b class='flag-5'>代碼</b><b class='flag-5'>生成器</b>模板和腳本

    將使用代碼生成器生成的項(xiàng)目移植到與智能配置器起使用的項(xiàng)目

    將使用代碼生成器生成的項(xiàng)目移植到與智能配置器起使用的項(xiàng)目
    發(fā)表于 06-30 20:54 ?0次下載
    將使用<b class='flag-5'>代碼</b><b class='flag-5'>生成器</b><b class='flag-5'>生成</b>的項(xiàng)目移植到與智能配置器<b class='flag-5'>一</b>起使用的項(xiàng)目

    RL78的代碼生成器發(fā)布說明

    電子發(fā)燒友網(wǎng)站提供《RL78的代碼生成器發(fā)布說明.pdf》資料免費(fèi)下載
    發(fā)表于 01-30 09:48 ?0次下載
    RL78的<b class='flag-5'>代碼</b><b class='flag-5'>生成器</b>發(fā)布說明