博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot+mybatis环境的坑和sql语句简化技巧
阅读量:6907 次
发布时间:2019-06-27

本文共 2845 字,大约阅读时间需要 9 分钟。

1.springfox-swagger实体类无限递归

 里面有不完美的解决方案

不用动源码的解决方案也有,在swagger项目里的函数传入参数没有类互相包含就可以了

这也要求某些多对多关系的实体类的属性定义要仔细走关系图

比如User和SysClass,用在swagger传入参数的实体类不能互相包含List<SysClass>和List<User>

只能继承VO(这个VO不能作为swagger函数的传入参数),把对应的包含属性写进去,然后需要查询对应列表时返回VO就行了

 

2.有中间表的mybatis一对多查询

查看某些有明确一对多关系的实体类的mybatis xml,可以看到查询方式是主表join子表,然后在mybatis这端把主表的数据group起来作为某个对象的元素

由此可见没有直接关联的2个表对应的类也可以用这种方式查询

SysClassMapper.xml

 

3.swagger传入参数含有对象数组时的坑点

swagger前端在碰到对象数组(无论是直接传的还是实体类里面的)时,会显示xxx[0].id和xxx[0].name之类的参数,但是直接通过前端发送请求,会因为url含有非法字符被拒绝请求

如果是用其他程序提交,例如Python(先安装requests扩展包),可以提交这种带对象数组的请求,并让服务器接收

import requestsimport jsondef login():    res = requests.post('http://localhost:20005/api/user/login?userAccount=admin&userPassword=admin', verify=False)    myj = json.loads(res.text)    #print(myj)    return myj['data']['token']#def addContent():    token = login()    params = {        'resourceSteps[0].procedureName': 'ytmym',         'resourceSteps[0].procedureContent': 'mytm',         'resourceSteps[2].procedureName': 'loveZJJ',         'resourceSteps[2].procedureContent': 'asswecan',         'id': '45',         'resourceContentId': '45j45j',         'experimentAdd': '5j5j',         'experimentAdd1': 'grh',         'stepsjson': '[{"procedureName":"a","procedureContent":"b"}]',         'token': token,         'resourceManagementId': 'j54j45j',         'experimentalObjective': '45j45j4',         'experimentalContext': '45j45j',         'experimentalRequirements': '5j45j',         'prepareKnowledge': '54j45j',        'experimentSummary': 'j54j',         'experimentTestId': 'h4h54'    }    url = 'http://localhost:20005/api/resource/add/content'    res = requests.post(url, params=params)    print(res.text)#if __name__ == '__main__':    addContent()
View Code

但是这种实现方式不太推荐,太不直观了。建议使用@ResponseBody注解对象数组或包含此类型的实体类,然后让前端传入json,处理会简单一些

 

转载于:https://www.cnblogs.com/dgutfly/p/10335207.html

你可能感兴趣的文章
大二暑假第一周进度报告
查看>>
ZROI2018提高day2t1
查看>>
EZOJ #87
查看>>
C++智能指针应用方式体验
查看>>
作业三:读《构建之法》1-5章读后感
查看>>
Hadoop综合大作业
查看>>
C#使用StreamWriter类写入文件文件
查看>>
响应式开发
查看>>
【LeetCode每天一题】Candy(分糖果)
查看>>
聊聊HTTPS和SSL/TLS协议
查看>>
日期与毫秒互转(转)
查看>>
python jinja 模板教程
查看>>
Stani's Python Editor下载
查看>>
使用apidoc 生成Restful web Api文档
查看>>
Linux 下后台运行程序,查看和关闭后台运行程序
查看>>
SortedDictionary和SortedList
查看>>
七、Builder 建造器模式
查看>>
Redis 总结
查看>>
WCF 回调及重入
查看>>
Java集合与泛型中的几个陷阱,你掉进了几个?
查看>>