-
mybatis中一个resultMap 包含多个association,一个类对应多个类属性写法
2020-08-15 22:32:19经过查询得知一个自定义类中包含多个自定义类是可以写多个association进行映射的,如下: //实体类 @Data @NoArgsConstructor @AllArgsConstructor public class Detail { private String id; private String ...经过查询得知一个自定义类中包含多个自定义类是可以写多个association进行映射的,如下:
//实体类 @Data @NoArgsConstructor @AllArgsConstructor public class Detail { private String id; private String title; private String description; private String student_id; private String teacher_id; private String answer; private Date create_date; //下面两个是自定义类 private Teacher teacher; private Student student; }
<!-- 一个resultMap 包含多个association --> <select id="querryAll" resultMap="res1"> select b.*,rn from (select d.id did,d.title,d.description,d.answer,d.create_date,t.id tid,t.realname realname,s.id sid,s.name sname,ROWNUM rn from IN_DETAIL d left join in_teacher t on d.teacher_id=t.id left join IN_STUDENT s on d.STUDENT_ID=s.ID ORDER BY did desc ) b where rn between #{begin} and #{end} </select> <resultMap id="res1" type="Detail"> <id column="did" property="id"></id> <result column="title" property="title"></result> <result column="description" property="description"></result> <result column="answer" property="answer"></result> <result column="create_date" property="create_date"></result> <association property="teacher" javaType="Teacher"> <id column="tid" property="id"></id> <result column="realname" property="realname"></result> </association> <association property="student" javaType="Student"> <id column="sid" property="id"></id> <result column="sname" property="name"></result> </association> </resultMap>
-
IOS中可以一个多个xib文件对应一个类。当然也可以在一个Xib中创建多个view然后也是用一个类控制
2016-05-09 14:41:08 -
【laravel】 复杂表单请求验证类,实现一个类对应多个表单
2018-09-13 21:06:17一、序言 laravel 中提供了两种验证请求数据的方法,第一种方法适用于简单的验证,表单验证和...(本文只介绍了接口验证和返回错误处理,form表单提交可以看文章底部参考文章中的第一个链接)。以下代码写于 l...一、序言
laravel 中提供了两种验证请求数据的方法,第一种方法适用于简单的验证,表单验证和业务逻辑放在一起,显得业务代码臃肿,而且重复的验证规则基本也是复制粘贴,代码也不好看,这是关键。本篇教程就不说这个了,需要了解的请戳这里。第二种就是建立请求验证类,下面就详细说一说这个。(本文只介绍了接口验证和返回错误处理,form表单提交可以看文章底部参考文章中的第一个链接)。
二、正文
表单请求是包含验证逻辑的自定义请求类,要创建表单验证类,可以使用
Artisan
命令make:request
,我们可以先创建一个基类,然后创建对应的表单类。
ps:生成的类文件默认是在app/Http/Requests
目录下
创建命令如下:// 创建基类 php artisan make:request BaseRequest // 系统配置的表单验证类,创建成功后需要手动修改下让它继承基类 php artisan make:request SystemConfigRequest
BaseRequest.php
基类里面的authorize
方法里面默认return false
,这个方法是判定用户是否有权限发起请求的,我们一般都不会在这个地方判断请求权限吧,所以给他改成默认返回true
,如果你有啥特殊需求的话就可以在这里验证权限。
代码如下:<?php namespace App\Requests; use Illuminate\Foundation\Http\FormRequest; class BaseRequest extends FormRequest { /** * @var 当前表单验证使用的规则 */ protected $useRules = []; // 各种验证规则的错误提示,当你子类里面添加了新的规则这里也需要加上,或者在子类复写该变量 protected $errorMsg = [ 'required' => '为必填项', 'min' => '最小为:min', 'max' => '最大为:max', 'between' => '长度在:min和:max之间', 'integer' => '必须为整数', 'string' => '必须为字符串', 'regex' => '格式错误', 'unique' => '已存在', 'present' => '字段值可以为空但是必传', 'array' => '必须是数组格式', 'json' => '不是有效的json格式', ]; /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * messages 返回给前台的错误信息转换成自定义提示,默认提示是英文 * @return array */ public function messages() { $array = []; foreach ($this->useRules as $key => $value) { // 获取单个字段的多个验证规则 if (!is_array($value)) $new_arr = explode('|', $value); else $new_arr = $value; foreach ($new_arr as $k => $v) { // 获取单个规则的前部分 $v = array_first(explode(':', $v)); // 最终得到每个字段对应的规则返回消息 $array[$key . '.' . $v] = ':attribute' . $this->errorMsg[$v]; } } return $array; } }
SystemConfigRequest.php
系统配置请求验证类里面可以定义添加,修改等操作的请求数据验证的规则,其中config.*.title
的写法是验证请求过来的数组中的字段,实际验证字段是config[0][title]
。还有使用 regex 模式时,规则必须放在数组中,而不能使用管道分隔符,尤其是正则表达式中已经使用了管道符号时。验证规则有许多,就不一一介绍了,有需要的话可以去看下文档。《 [ Laravel 5.5 文档 ] 处理用户请求 —— 请求表单验证及错误处理大全 》。
下面看下系统配置请求验证类怎么写的,代码如下:<?php namespace App\Requests; // 这里要继承上面创建的 BaseRequest 基类哦,别忘了 class SystemConfigRequest extends BaseRequest { /** * @var array 定义验证规则 */ private $rules = [ // 这里代表创建表单需要验证的字段 'create' => [ 'testCreate' => 'required' ], // 更新表单需要验证的字段 'update' => [ 'testUpdate' => 'required' ], // 不管是创建还是更新都要验证的字段 'edit' => [ 'config.*.title' => 'required|string', 'config.*.details' => 'present', 'config.*.set_key' => 'required|string', 'config.*.set_value' => 'present', 'token' => 'required|string', ], ]; /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { // 根据不同的请求, 添加不同的验证规则,将对应的请求的规则和公共的规则合并 if (static::getPathInfo() == '/api/system/setconfig') { $this->useRules = array_merge($this->rules['create'], $this->rules['edit']); } if (static::getPathInfo() == '/api/system/editconfig') { $this->useRules = array_merge($this->rules['update'], $this->rules['edit']); } return $this->useRules; } /** * attributes 设置各个字段的中文注解 * @return array * @author liuml <liumenglei0211@163.com> * @DateTime 2018/9/13 20:34 */ public function attributes() { return [ 'token' => '令牌', 'config' => '配置项', 'config.*.title' => '配置项中标题', 'config.*.details' => '配置项中详情', 'config.*.set_key' => '配置项中设置的键名', 'config.*.set_value' => '配置项中设置的键值', ]; } }
控制器中需要使用的时候,直接注入就行了
/** * addConfig * @param SystemConfigRequest $request * @return \Illuminate\Http\JsonResponse * @throws BusinessExceptions */ public function addConfig(SystemConfigRequest $request){ $config = $request->post(); $res = $this->systemConfigLogic->setConfig($config); if($res){ return $this->returnData(1); } return $this->returnData(0); }
下面这张图返回的错和上面的验证规则不是匹配的,懒得换对应的图了,反正知道返回的错是这样的就行,当然下图的返回错误是处理过后返回的。至于如何处理的话看结尾的图例
自定义返回格式啥的在
app\Exceptions\Handler
这里处理就行。
在render
方法中添加下面代码就行,当然你是没有returnData
方法的。自己封装一个响应的函数就行。或者直接使用laravel
中的response
函数就行// 判断该异常是否是参数验证错误的异常,是的话直接返回 if ($exception instanceof ValidationException) { $error = array_first(array_collapse($exception->errors())); return returnData(20000, $error); }
参考文章:
https://www.jianshu.com/p/0225e63454e8
https://laravelacademy.org/post/7978.html -
一个类对应的一个XIB里面有多个view时,类的属性为NULL的解决办法
2017-02-23 16:05:11只从一个view拉线到类的属性时,会出现这个属性为null的情况,解决办法是:不要从xib往类上拉线,而要从类往xib上拉,拉到xib上得时候要把弹出来的框里所有的view都点上。这样就不会null了,可以正常用了。目前还不...只从一个view拉线到类的属性时,会出现这个属性为null的情况,解决办法是:不要从xib往类上拉线,而要从类往xib上拉,拉到xib上得时候要把弹出来的框里所有的view都点上。这样就不会null了,可以正常用了。目前还不知道机制为什么是这样,这是随身炉石项目里ENMediaCell有多个xib,在视频缓存里titleHeightContraint总是为null时发现的。
-
QT简单入门实例9【一个信号对应多个槽,多个信号对应一个槽】
2020-02-18 16:26:351.一个信号对应多个槽时,槽函数的执行顺序是怎样的??? 2.多个信号对应一个槽时,如何在槽函数中判断信号的发出者是谁(来自哪个类的对象)? 下面对这两种情况分别进行验证: 实例演示1:对一个信号对应多个槽时... -
一个java文件中是否可以定义多个类
2018-09-08 21:40:57一个java文件中可以定义多个类,但是最多只有一个类被public修饰,并且这个类的类名与文件名必须相同,若这个文件中没有public的类,则文件名随便是一个类的名字即可。余姚注意的是,当用javac指令编译有多个类的... -
多线程Callable和Future编写一个对应的工具类
2017-10-31 01:07:59现在我需要把线程池这一部分的内容从该service层提取出来,做一个工具类也可以,其他实现也可以,自己试过用ThreadPoolExecutor这个类来写工具类,但是该类构造器内部需要一个队列,查看该队列存放的数据类型,只能... -
一个java 源文件,可以有多个类,但是只能有一个public修饰的类
2019-09-21 10:24:04编译器每编写一个.java文件(编译单元),会输出很多与java文件类的名称对应的从class文件,不仅仅限制于public修饰的。但是public类是用来编译单元存在的公开接口。如果没有的话,运行会报错,提示找不到加载的类。... -
(十一)一个Java文件是否可以定义多个类
2019-02-13 22:32:00一个Java文件可以定义多个类,但是最多(0、1)只能有一个类被public修饰,并且这个类名与文件名必须相同;若这个类没有public的类,则文件名随便是一个类的名字即可。 需要注意的是,当Javac指令编译这个.java文件... -
一个商品属于多个分类_购买的商标想再添加一个小类可以吗?
2020-11-09 22:15:40商标类别指的是所要注册的商标所属的行业,我国采用尼斯商品分类,商标注册用商品和服务分类表共分为45类,指向特定的产品与服务,其中1-34是商品类别,35-45是服务类别。...那这样到底可以吗?当然是,不... -
一个商品属于多个分类_购买的商标想在添加一个小类可以吗?
2020-11-09 22:15:06商标类别指的是所要注册的商标所属的行业,我国采用尼斯商品分类,商标注册用商品和服务分类表共分为45类,指向特定的产品与服务,其中1-34是商品类别,35-45是服务类别。...那这样到底可以吗?当然是,不... -
hibernate如何实现多个表结构相同的表对应同一个实体类
2016-06-29 16:17:01我们都知道在使用hibernate提供的框架时,我们只需要写好相关配置文件,对应好映射关系,在代码中运用好SQL语句就可以很好地与数据库进行交互,往往我们都是在数据已经建好的基础上进行一系列操作的,但是我们也可以在xml... -
通过反射动态获取类的属性和属性值并把一个类的属性值对应赋值到另外一个类上
2020-04-11 13:11:23废话不多说直接上代码方法,这个方法是传入一个泛型为任意类型T 的集合,然后循环从集合中利用反射获取类型为T的对象的属性然后set给类型为E的对象并返回对象E。亲们可以用我写这个方法进行任意适合你需求的去改造。... -
每个分类的内容下面有个查看更多的功能, 我现在在每个分类的上面添加了一点击事件可以获取相对应的类容,...
2017-10-17 15:13:16我这里有三个分类,每个分类上面有相对应的类别ID,每个分类的内容下面有个查看更多的功能, 我现在在每个分类的上面添加了一点击事件可以获取相对应的类容,请问如何才能让下面的查看更多点击的时候能加载出当前... -
ASP.NET MVC 初学笔记.2 一个View多个Models的对应
2017-12-24 22:39:43MVC原则上是一个View对应一个Model,也就是在Controller里对View进行一次数据的传递,那么像一个网站的首页包含很多的...其实很简单,就是把很多个Model封装成一个Model类再通过Controller来传递这个Model就可以了。 -
MFC创建MDI程序一个Doc对应多个View
2015-02-03 20:03:53新建一个多文档的工程 点击确定 中间没有注释说明的就一路Next,知道下面的步骤可以选择CView的基类 点击完成应用程序框架完成 下面,就开始在工程中在插入一个视图类 定义新建类的名称同时选择其基类 ... -
idea中如何查看一个类的方法被那些类调用了,显示方法对应的调用树
2020-06-30 11:41:57今天我想查看一个方法被其它那些方法对象调用时,使用alt+7或者alt+f7都不好使,但使用idea对应的菜单栏工具肯定好使。 首先,在万不得已的时候,我们还是可以使用鼠标右键 --》 Find in Path在项目中全局搜索。... -
hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决?
2017-09-06 16:37:34返回的是一个List这样的类型,你可以另外创建一个DTO然后通过循环,把Object[]中的每一个值,与dto中的字段对应,组成一个List的对象,例如: People , Card 一个人和身份证 People:id ,name, age; Card:... -
python的多线程的一个类,直接可以使用
2019-06-28 21:34:41import threading import queue import time ''' queue.qsize() 返回队列的大小 queue.empty() 如果队列为空,返回True,反之False ...queue.full 与 maxsize 大小对应 queue.get([block[, timeout]])获取队列,t... -
JAVA一个文件写多个类 ( 同级类 ) 规则和注意点
2018-11-22 22:11:12在一个.java文件中可以有多个同级类, 其修饰符只可以public/abstract/final/和无修饰符 public修饰的只能有一个,且必须要与文件名相同; 因为jvm虚拟机为了提高查找类的速度,使用import语句导入的时候,只会... -
struts2 -- 一个action类实现多个方法
2018-05-10 17:25:50SSH之action中的多个方法的调用方法public String logon(){ return "success"; } public String register(){ ... (一)动态方法调用,配置文件不变,一个action类对应配置文件中一个action标... -
一个Servlet类实现多个请求处理(Servlet优化)
2020-06-09 19:33:18其实,我们只需要一个Servlet就可以处理多个请求,这只需要我们在jsp页面向servlet发送请求时候,并传递一个参数,这个参数值是用来标记此请求,进入BeanServlet类我们只需要对这个参数值进行判断,然后创建对应的... -
如何做到 一个Action 类 应对多个action 请求
2016-05-12 16:24:59问题:如果一个Action类需要应对多个action请求,且每个action 请求的验证规则有不一样,该如何处理? > 为每一个不同的 action 请求定义其对应的验证文件: ActionClassName_AliasName_validation.xml > 不带... -
Python 字典中如何一键对应多个值创造一个嵌套字典?
2019-04-27 18:06:20着急的朋友直接看方案2,可以解决大部分这类问题 方案一 list作为dict的值 值允许重复' d1={} key=1 value=2 d1.setdefault(key,[]).append(value) value=2 d1.setdefault(key,[]).append(value) printd1 ... -
一个java只能有一个public类
2019-03-12 22:03:58相应的.class文件,而一个java文件中可以同时又多个不使用public关键字声明的类,但是编译后会产生多个与之对应的.class文件,并且要执行的文件是对应的多个.class的前缀名。 为什么一个文件中只能有一个pu... -
tomcat启动项目报错:一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件
2020-12-14 19:03:29tomcat启动项目报错:一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件 解决方法:打开navigator->右键build project,生成build文件夹(装class文件的)就可以启动成功了, OS:当时为了清除... -
hibernate 多表隐射 一个类
2015-07-11 17:04:37第一种 需要再sql语句中把对应的字段起个别名 ,对应类中的属性。 这样query.list() 就可以直接获取对应的对象 Map map = new HashMap(); map.put("aaa", aaaa); SQLQuery query = getSession().... -
在struts1中使用DispatchAction对应多个ActionForm,实现写一个Action实现增删改查操作---一个Action处理多...
2015-05-19 11:24:38先来了解DispatchAction类: 原始的配置action都是...DispatchAction,就是用来解决使用一个Action处理多个操作的能力,这是DispatchAction最大的用途,它可以帮助我们用一个Action类,封装一套类似的操作方法,节省书 -
可不可以动态调用一个类的静态方法
2015-05-17 04:08:10然后有多个类都继承这个interface,其实类里都只有这么一个方法,完全不用实例 化。我通过MemCached根据key来获取对应的要调用的实现这个类的路径。但是知道类的路径后怎么调用doSomething呢?