guns框架使用日记

如果要使用日期类型

需要在html最下面script中写入

<script>

    laydate.render({

            elem:'#控件id'

    });

</script>

添加数据功能

数据库id要为bigint类型

实体类的id添加下面注释

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


删除功能

首先获取选取的行 然后在行[0]获取id  再根据这个id传给后台进行删除 传入时id为String类型  后台需要将他转为Long类型


修改功能

    还是首先获取选取的行 然后在行[0]获取id,然后将这个id传给后台跳转页面的接口,根据这个id可以动态生成页面,生成的页面数据就是选中的数据,然后修改后提交给后台,通过input id="id" value="${item.id}" type="hidden"传入id


前台日历时间和后台数据库时间不一致

修改后台yml配置文件的连接数据库url     serverTimezone=Hongkong


面对不同开发环境可以通过

---来进行分割  这是spring profiles的功能



Wrapper初步理解

    首先controller层查询数据后必须是List<Map<String,Object>>或者Map<String,Object>类型,然后给自定义的一个Wrapper包装

    自定义的Wrapper要继承extends BaseControllerWarpper  然后构造函数中

public UserWarpper(List> list) {

    super(list);

}  让父类去处理

    然后重写warpTheMap的方法,自己进行包装

比如

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

sexName:经过包装后的Map Key

sex:数据库列的名字,通过这个名字去字典查找相应的值

在IConstaantFactory接口类中写这个获取值的方法

然后在ConstaantFactory类中写实现刚刚的那个方法,在这个方法中调用

return getDictsByName("性别", sex);  意思就是在字典中查找对应的值

第一个参数写类型,第二个参数写的是值 比如 性别:1  然后就能返回相应的中文字段了


创建一个字典映射类

目前好像只用在日志记录中

创建一个类如UserDict 继承 AbstractDictMap

重写他的init方法 在里面写

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

initBeWrapped方法

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

如:

putFieldWrapperMethodName(sex,getSexName)

因为 sex 1对应男 2对应女 这种字段就需写在initBeWrapped中


业务日志功能

在Controller层中添加

@BussinessLog注解(value="业务名称",key="用来唯一标识,当一个不能标识的时候可以填两个",dict="UserDict,class") 字典用于查找某些值对应的中文名称

key的值和UserDict里面的属性值想对应


GUNS中使用SWAGGER

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

@RequestParam 对应得paramType="querry"

@PathVariable 对应得paramType="path"

@RequestBody 对应得paramType="body"


获取登陆用户信息

ShiroUser user = ShiroKit.getUser();


@Permission

不加参数就是按正常权限来看能否访问

这个正常权限是检测你请求的路径有没有你的权限

@Permission(参数)

里面的参数是什么就是什么角色可以访问

就是角色管理里面的别名

如果想自定义权限 需要在Const接口类中添加常量


${tips!}

tips是后端model传入的值 在前台页面如果为空则不显示 


Guns框架使用的表单验证是写在js的  用的是bootstrapValidator.js

第一步

在info.js中

InfoDlg中

:validateFields: {

    account: {

        validators: {

            notEmpty: {

                message:'账户不能为空'

                               }

                              }

                       }

}

添加需要验证的字段

第二步:

/**

* 验证数据是否为空

*/

MyOrderInfoDlg.validate =function () {

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

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

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

};

MyOrderInfoForm:是需验证表单的id


第三步:

在ajax请求中

if (!this.validate()) {

return;

}

开启验证


第四步:

$(function() {

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

});

初始化验证


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

这个博客说明了各种验证的方法.


想使用不同模板

重新创建一个模板文件  重新创建一个TemplateEngine类 修改对应的模板路径

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


动态查询功能

1.在html页面中增加输入框

如:

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

    <#NameCon id="goodsid" name="订单id" />

</div>

2.在js文件下的search方法中获取输入框对应的值

如:

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

3.在后台方面,在控制层参数上添加@RequestParam(required =false) String goodsid获取对应的值

4.新建一个实体Wrapper对象

如:

EntityWrapper myOrderEntityWrapper=new EntityWrapper<>();

5.判断每个查询条件是否为空,若不为空则:

myOrderEntityWrapper.like("id",goodsid);

6.最后返回查询数据

return secondService.selectList(myOrderEntityWrapper);

数据范围

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

思路:前台不传入deptid,后台获取当前用户的deptid

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


事务


事务的四个特性

原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。

一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。

隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。

持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。

隔离性

如果不考虑隔离性产生的三种后果:

1.脏读:在一个事务中,读取了另一个未提交事务中的数据.

2.不可重复读:一个事务范围内多次查询,返回了不同数据值(由于在查询间隔被另一个事务修改了)

3.幻读:一个事务批量修改表中的所有数据,这时另一个事务往表里新增了一条记录,导致第一个事务发现修改完之后落了一条,就跟产生幻觉一样.

Mysql提供的四种隔离级别

isolation=Isolation.DEFAULT

Serializable (串行化):可避免脏读、不可重复读、幻读的发生。

Repeatable read (可重复读):可避免脏读、不可重复读的发生(默认的隔离级别) 。(默认)

Read committed (读已提交):可避免脏读的发生。

Read uncommitted (读未提交):最低级别,任何情况都无法保证。

然级别越高,执行效率就越低。

传播行为

propagation=Propagation.REQUIRED

当事务方法被另一个事务方法调用时,须指定事务应该如何传播。

事务的传播行为:

PROPAGATION_REQUIRED--表示当前方法必须运行在事务中。如果当前事务存在,方法将会在该事务中运行。否则,会启动一个新的事务(默认)

PROPAGATION_SUPPORTS--表示当前方法不需要事务,但是如果存在当前事务的话,那么该方法会在这个事务中运行,如果当前没有事务,就以非事务方式执行。

PROPAGATION_MANDATORY--表示该方法必须在事务中运行,如果当前事务不存在,则会抛出一个异常。

PROPAGATION_REQUIRES_NEW--表示当前方法必须运行在它自己的事务中。一个新的事务将被启动。如果存在当前事务,在该方法执行期间,当前事务会被挂起。

PROPAGATION_NOT_SUPPORTED--表示该方法不应该运行在事务中。如果存在当前事务,在该方法运行期间,当前事务将被挂起。

PROPAGATION_NEVER--表示当前方法不应该运行在事务上下文中。如果当前正有一个事务在运行,则会抛出异常

PROPAGATION_NESTED--一个事务内部嵌套事务的执行不会影响外部事务,但外部事务的执行要影响内部


REST框架使用流程

    先访问auth接口获得随机字符串和token

    客户端通过这个随机字符串当作盐先将要发送的数据转化为json,在进行base64加密,在进行md5加密获得对象和签名.

    客户端再访问hello接口,在body当中传入刚刚生成的object和sign  要以raw和json的形式发送,在请求头上

添加Authorization:Bearer+刚刚从auth获取的token值

例如:Bearer eyJhbGciOiJIUzUxMiJ9.eyJyYW5kb21LZXkiOiIzbmhhZ20iLCJzdWIiOiJhZG1pbiIsImV4cCI6MTUzNzg3NzM3OCwiaWF0IjoxNTM3MjcyNTc4fQ.slc5CDGe1Py6Ieo86fpQHlEIQhX8Um3la4z6OnJxVDQHCd_QATMbwvG_ORqJpx3UEFX10g7EJpzdKEC3Y9cI4g

和Content-Type:application/json

就验证成功了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,659评论 0 15
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,084评论 1 32
  • 1. DOM事件流的介绍,事件流的顺序,IE下是否一致 答:IE支持的是事件冒泡,其他最新浏览器冒泡捕获都支持DO...
    芸芸人海之中独独遇见你阅读 784评论 2 6
  • 一条红色的鱼 朝我游过来 身材宽硕 一小片尖锐的的玻璃碴 深深扎进她的身体 鱼难过着双眼 看着我的眼睛 似乎在说 ...
    原木C阅读 397评论 0 3