guns框架使用日記

如果要使用日期類型

需要在html最下面script中寫入

<script>

? ? laydate.render({

????????????elem:'#控件id'

? ? });

</script>

添加數(shù)據(jù)功能

數(shù)據(jù)庫id要為bigint類型

實(shí)體類的id添加下面注釋

@TableId(value ="id", type = IdType.ID_WORKER) 就可以自動生成id


刪除功能

首先獲取選取的行 然后在行[0]獲取id? 再根據(jù)這個id傳給后臺進(jìn)行刪除 傳入時id為String類型? 后臺需要將他轉(zhuǎn)為Long類型


修改功能

????還是首先獲取選取的行 然后在行[0]獲取id,然后將這個id傳給后臺跳轉(zhuǎn)頁面的接口,根據(jù)這個id可以動態(tài)生成頁面,生成的頁面數(shù)據(jù)就是選中的數(shù)據(jù),然后修改后提交給后臺,通過input id="id" value="${item.id}" type="hidden"傳入id


前臺日歷時間和后臺數(shù)據(jù)庫時間不一致

修改后臺yml配置文件的連接數(shù)據(jù)庫url? ? ?serverTimezone=Hongkong


面對不同開發(fā)環(huán)境可以通過

---來進(jìn)行分割? 這是spring profiles的功能



Wrapper初步理解

????首先controller層查詢數(shù)據(jù)后必須是List<Map<String,Object>>或者M(jìn)ap<String,Object>類型,然后給自定義的一個Wrapper包裝

? ? 自定義的Wrapper要繼承extends BaseControllerWarpper? 然后構(gòu)造函數(shù)中

public UserWarpper(List> list) {

????super(list);

}? 讓父類去處理

? ? 然后重寫warpTheMap的方法,自己進(jìn)行包裝

比如

map.put("sexName", ConstantFactory.me().getSexName((Integer) map.get("sex")));

sexName:經(jīng)過包裝后的Map Key

sex:數(shù)據(jù)庫列的名字,通過這個名字去字典查找相應(yīng)的值

在IConstaantFactory接口類中寫這個獲取值的方法

然后在ConstaantFactory類中寫實(shí)現(xiàn)剛剛的那個方法,在這個方法中調(diào)用

return getDictsByName("性別", sex);? 意思就是在字典中查找對應(yīng)的值

第一個參數(shù)寫類型,第二個參數(shù)寫的是值 比如 性別:1? 然后就能返回相應(yīng)的中文字段了


創(chuàng)建一個字典映射類

目前好像只用在日志記錄中

創(chuàng)建一個類如UserDict 繼承 AbstractDictMap

重寫他的init方法 在里面寫

put(字段名,對用中文名中文)

initBeWrapped方法

用于存放些某些需要字典翻譯的字段名

如:

putFieldWrapperMethodName(sex,getSexName)

因?yàn)?sex 1對應(yīng)男 2對應(yīng)女 這種字段就需寫在initBeWrapped中


業(yè)務(wù)日志功能

在Controller層中添加

@BussinessLog注解(value="業(yè)務(wù)名稱",key="用來唯一標(biāo)識,當(dāng)一個不能標(biāo)識的時候可以填兩個",dict="UserDict,class") 字典用于查找某些值對應(yīng)的中文名稱

key的值和UserDict里面的屬性值想對應(yīng)


GUNS中使用SWAGGER

只需要在控制層里面得方法中添加@ApiOperation("添加訂單")注解就可以了

@RequestParam 對應(yīng)得paramType="querry"

@PathVariable 對應(yīng)得paramType="path"

@RequestBody 對應(yīng)得paramType="body"


獲取登陸用戶信息

ShiroUser user = ShiroKit.getUser();


@Permission

不加參數(shù)就是按正常權(quán)限來看能否訪問

這個正常權(quán)限是檢測你請求的路徑有沒有你的權(quán)限

@Permission(參數(shù))

里面的參數(shù)是什么就是什么角色可以訪問

就是角色管理里面的別名

如果想自定義權(quán)限 需要在Const接口類中添加常量


${tips!}

tips是后端model傳入的值 在前臺頁面如果為空則不顯示?


Guns框架使用的表單驗(yàn)證是寫在js的? 用的是bootstrapValidator.js

第一步

在info.js中

InfoDlg中

:validateFields: {

????account: {

????????validators: {

????????????notEmpty: {

????????????????message:'賬戶不能為空'

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ?}

}

添加需要驗(yàn)證的字段

第二步:

/**

* 驗(yàn)證數(shù)據(jù)是否為空

*/

MyOrderInfoDlg.validate =function () {

$('#MyOrderInfoForm').data("bootstrapValidator").resetForm();

? ? $('#MyOrderInfoForm').bootstrapValidator('validate');

? ? return $("#MyOrderInfoForm").data('bootstrapValidator').isValid();

};

MyOrderInfoForm:是需驗(yàn)證表單的id


第三步:

在ajax請求中

if (!this.validate()) {

return;

}

開啟驗(yàn)證


第四步:

$(function() {

Feng.initValidator("MyOrderInfoForm", MyOrderInfoDlg.validateFields);

});

初始化驗(yàn)證


https://blog.csdn.net/asd245025733/article/details/78061577?locationNum=7&fps=1

這個博客說明了各種驗(yàn)證的方法.


想使用不同模板

重新創(chuàng)建一個模板文件? 重新創(chuàng)建一個TemplateEngine類 修改對應(yīng)的模板路徑

最后在AbstractGeneratorConfig的doGunsGeneration方法中將GunsTemplateEngine改為你自己的模板引擎


動態(tài)查詢功能

1.在html頁面中增加輸入框

如:

<div class="col-sm-3">

? ? <#NameCon id="goodsid" name="訂單id" />

</div>

2.在js文件下的search方法中獲取輸入框?qū)?yīng)的值

如:

queryData['goodsid'] =$("#goodsid").val();

3.在后臺方面,在控制層參數(shù)上添加@RequestParam(required =false) String goodsid獲取對應(yīng)的值

4.新建一個實(shí)體Wrapper對象

如:

EntityWrapper myOrderEntityWrapper=new EntityWrapper<>();

5.判斷每個查詢條件是否為空,若不為空則:

myOrderEntityWrapper.like("id",goodsid);

6.最后返回查詢數(shù)據(jù)

return secondService.selectList(myOrderEntityWrapper);

數(shù)據(jù)范圍

myOrderEntityWrapper.in("deptid",ShiroKit.getDeptDataScope());

思路:前臺不傳入deptid,后臺獲取當(dāng)前用戶的deptid

test.setDeptid(ShiroKit.getUser().deptId);就可以了


事務(wù)


事務(wù)的四個特性

原子性(Atomicity):事務(wù)是一個原子操作,由一系列動作組成。事務(wù)的原子性確保動作要么全部完成,要么完全不起作用。

一致性(Consistency):一旦事務(wù)完成(不管成功還是失?。?,系統(tǒng)必須確保它所建模的業(yè)務(wù)處于一致的狀態(tài),而不會是部分完成部分失敗。在現(xiàn)實(shí)中的數(shù)據(jù)不應(yīng)該被破壞。

隔離性(Isolation):可能有許多事務(wù)會同時處理相同的數(shù)據(jù),因此每個事務(wù)都應(yīng)該與其他事務(wù)隔離開來,防止數(shù)據(jù)損壞。

持久性(Durability):一旦事務(wù)完成,無論發(fā)生什么系統(tǒng)錯誤,它的結(jié)果都不應(yīng)該受到影響,這樣就能從任何系統(tǒng)崩潰中恢復(fù)過來。通常情況下,事務(wù)的結(jié)果被寫到持久化存儲器中。

隔離性

如果不考慮隔離性產(chǎn)生的三種后果:

1.臟讀:在一個事務(wù)中,讀取了另一個未提交事務(wù)中的數(shù)據(jù).

2.不可重復(fù)讀:一個事務(wù)范圍內(nèi)多次查詢,返回了不同數(shù)據(jù)值(由于在查詢間隔被另一個事務(wù)修改了)

3.幻讀:一個事務(wù)批量修改表中的所有數(shù)據(jù),這時另一個事務(wù)往表里新增了一條記錄,導(dǎo)致第一個事務(wù)發(fā)現(xiàn)修改完之后落了一條,就跟產(chǎn)生幻覺一樣.

Mysql提供的四種隔離級別

isolation=Isolation.DEFAULT

Serializable (串行化):可避免臟讀、不可重復(fù)讀、幻讀的發(fā)生。

Repeatable read (可重復(fù)讀):可避免臟讀、不可重復(fù)讀的發(fā)生(默認(rèn)的隔離級別) 。(默認(rèn))

Read committed (讀已提交):可避免臟讀的發(fā)生。

Read uncommitted (讀未提交):最低級別,任何情況都無法保證。

然級別越高,執(zhí)行效率就越低。

傳播行為

propagation=Propagation.REQUIRED

當(dāng)事務(wù)方法被另一個事務(wù)方法調(diào)用時,須指定事務(wù)應(yīng)該如何傳播。

事務(wù)的傳播行為:

PROPAGATION_REQUIRED--表示當(dāng)前方法必須運(yùn)行在事務(wù)中。如果當(dāng)前事務(wù)存在,方法將會在該事務(wù)中運(yùn)行。否則,會啟動一個新的事務(wù)(默認(rèn))

PROPAGATION_SUPPORTS--表示當(dāng)前方法不需要事務(wù),但是如果存在當(dāng)前事務(wù)的話,那么該方法會在這個事務(wù)中運(yùn)行,如果當(dāng)前沒有事務(wù),就以非事務(wù)方式執(zhí)行。

PROPAGATION_MANDATORY--表示該方法必須在事務(wù)中運(yùn)行,如果當(dāng)前事務(wù)不存在,則會拋出一個異常。

PROPAGATION_REQUIRES_NEW--表示當(dāng)前方法必須運(yùn)行在它自己的事務(wù)中。一個新的事務(wù)將被啟動。如果存在當(dāng)前事務(wù),在該方法執(zhí)行期間,當(dāng)前事務(wù)會被掛起。

PROPAGATION_NOT_SUPPORTED--表示該方法不應(yīng)該運(yùn)行在事務(wù)中。如果存在當(dāng)前事務(wù),在該方法運(yùn)行期間,當(dāng)前事務(wù)將被掛起。

PROPAGATION_NEVER--表示當(dāng)前方法不應(yīng)該運(yùn)行在事務(wù)上下文中。如果當(dāng)前正有一個事務(wù)在運(yùn)行,則會拋出異常

PROPAGATION_NESTED--一個事務(wù)內(nèi)部嵌套事務(wù)的執(zhí)行不會影響外部事務(wù),但外部事務(wù)的執(zhí)行要影響內(nèi)部


REST框架使用流程

????先訪問auth接口獲得隨機(jī)字符串和token

????客戶端通過這個隨機(jī)字符串當(dāng)作鹽先將要發(fā)送的數(shù)據(jù)轉(zhuǎn)化為json,在進(jìn)行base64加密,在進(jìn)行md5加密獲得對象和簽名.

? ? 客戶端再訪問hello接口,在body當(dāng)中傳入剛剛生成的object和sign? 要以raw和json的形式發(fā)送,在請求頭上

添加Authorization:Bearer+剛剛從auth獲取的token值

例如:Bearer eyJhbGciOiJIUzUxMiJ9.eyJyYW5kb21LZXkiOiIzbmhhZ20iLCJzdWIiOiJhZG1pbiIsImV4cCI6MTUzNzg3NzM3OCwiaWF0IjoxNTM3MjcyNTc4fQ.slc5CDGe1Py6Ieo86fpQHlEIQhX8Um3la4z6OnJxVDQHCd_QATMbwvG_ORqJpx3UEFX10g7EJpzdKEC3Y9cI4g

和Content-Type:application/json

就驗(yàn)證成功了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,724評論 19 139
  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 14,527評論 0 15
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,699評論 1 32
  • 1. DOM事件流的介紹,事件流的順序,IE下是否一致 答:IE支持的是事件冒泡,其他最新瀏覽器冒泡捕獲都支持DO...
  • 一條紅色的魚 朝我游過來 身材寬碩 一小片尖銳的的玻璃碴 深深扎進(jìn)她的身體 魚難過著雙眼 看著我的眼睛 似乎在說 ...
    原木C閱讀 479評論 0 3

友情鏈接更多精彩內(nèi)容