如果要使用日期类型

需要在html最下面script中写入

laydate.render({

elem:'#控件id'

});

添加数据功能

数据库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类型,然后给自定义的一个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页面中增加输入框

如:

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

就验证成功了

guns框架字典取值_guns框架使用日记相关推荐

  1. guns框架字典取值_10分钟搞定Guns快速开发平台

    一.Guns简介 Guns基于SpringBoot 2,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + mybatis-plus + beetl!Guns项目代码简洁,注 ...

  2. zhlan--Python中的字典遍历方法 字典取值

    一.Python中的字典遍历方法: info = { 'name':'xiaoming', 'sex':'nan', 'age':20, 'id':1} info2 = { 'name':'hhh', ...

  3. python字典取值_python 字典中取值的两种方法小结

    python 字典中取值的两种方法小结 如下所示: a={'name':'tony','sex':'male'} 获得name的值的方式有两种 print a['name'],type(a['name ...

  4. Python中字典取值常用的方法!

    字典是Python中比较常见的数据类型之一,它是一种可变容器模型,可以存储任意数量的任意类型的数据,而且字典中的每个元素由一个键和一个值组成,键和值之间用冒号分隔.本文为大家介绍一下Python中字典 ...

  5. python嵌套字典取值_python嵌套字典比较值与取值的实现示例

    python嵌套字典比较值与取值的实现示例 本文通过示例给大家介绍了python嵌套字典比较值,取值,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 示例代码 #取值import t ...

  6. python列表嵌套字典取值_Python基础语法:你不得不知的几种变量类型

    (点击上方快速关注并设置为星标,一起学Python) 作者:kina_chen來源:简书 01. Python编码Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字, ...

  7. python 字典取值的时间复杂度_五道常见的Python面试题一定不要答错!

    第1题:阅读下面的代码,默读出A0,A1至An的最终值. 默读代码类的题目,相对来说是比较简单的.重点去研究列表解析,之后你就可以轻松的回答这些问题啦 第2题:如何提高python的运行效率? 1.数 ...

  8. python列表嵌套字典取值_我的 python 学习历程-Day05 字典/字典的嵌套

    一.字典的初识 为什么要有字典 字典与列表同属容器型数据类型,同样可以存储大量的数据,但是,列表的数据关联性不强,并且查询速度比较慢,只能按照顺序存储. 什么是字典 先说一下什么叫可变与不可变的数据类 ...

  9. python列表嵌套字典取值_Python零基础快速入门(五):列表和字典

    第5节课程大纲 一.数据类型:列表 1.什么是列表 2.从列表提取单个元素:偏移量 3.从列表提取多个元素:冒号切片 4.给列表增加/删除元素:append()函数 二.数据类型:字典 1.什么是字典 ...

最新文章

  1. 关于vue,angularjs1,react之间的对比
  2. 数据结构(c语言版)笔记6,2020考研计算机《数据结构(C语言版)》复习笔记(6)
  3. Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化
  4. Mongodb基本操作说明
  5. 源码编译LAMP平台
  6. Vue 媒体处理(摄像头,截图,播放本地视频)
  7. Pycharm中设置py文件头部注释信息
  8. oracle 快照过旧怎么回退_我的世界20w45a:1.17首个快照!加入水晶、蜡烛、口袋、铜锭……...
  9. 蓝桥杯- 煤球数目-java
  10. qudp socket信号不触发_QT下udpsocket一段时间接收不到数据的问题
  11. 三星或将80%手机生产转至越南
  12. js获取html的ip,JavaScript获取客户端IP
  13. android 自定义相机 黑屏,Android自定义照相机Camera出现黑屏的解决方法
  14. html批量转码工具,文件转码工具(文件GBK与UTF编码批量转码工具)
  15. 阿里云SVN服务器迁移
  16. C++小实验之vector的 push_back 和 emplace_back 及其使用时机
  17. 知网专利信息爬虫!强无敌!
  18. 机械运动仿真软件测试培训,测试和机械运动测试.doc
  19. S7-200SMART指针学习(二)指针的内部结构
  20. java怎么让多个方法循环运行下去_35 个小细节,提升 Java 代码的运行效率!你知道几个?...

热门文章

  1. 伯努利分布 二项分布 贝塔分布
  2. Codeforces Canda Cup 2016
  3. threejs中bufferGeometry合并几何体实现
  4. 刚开通微博。。。。WEBview设置
  5. Spring-webflow基础讲解
  6. 如何通过指标追踪和分析实现母婴店年底促销销售目标?
  7. 『解疑』前端通过json数据导出excel表格文件(支持多级表头、复杂表头)(json转excel)
  8. python程序开始和结束时间
  9. 基于verilog实现2FSK调制解调器
  10. 【综合类型第 13 篇】在 Sublime Text 上如何卸载插件