mybatis获取map里的参数,mybatis返回list map结果集

  mybatis获取map里的参数,mybatis返回list map结果集

  

目录

前言1.项目结构2.pom文件配置3.其他的业务代码第一种采用#符的取值法第二种方式采用$符的取值法4.总结

 

  

前言

最近在工作中需要使用到我的巴蒂斯,需要实现某个功能。

 

  但是发现需要编写一个sql,但是框架的映射文件入参是目录集合和映射字符串,整数,需要循环列表,然后通过目录循环出来的值为钥匙获取地图中的值作为结构化查询语言的入参,遇到了一些问题。

  但是经过不懈的努力,最后终于解决了这个问题。顺便分享一下自己的经验。

  

1.项目结构

 

  

2.pom文件配置

服务器:端口: 8379 spring :数据源:用户名:根URL : JDBC :我的SQL ://localhost :3306/shop?use unicode=true character encoding=utf-8 use SSL=true server time zone=UTC driver-class-name : com。MySQL。JDBC。drivermybatis :映射器-位置:类路径:映射/*映射器。XML类型-别名-包: com。举例。bean # showsql logging : level 3: com 3360 example : Dao 3:调试

 

  

3.其他的业务代码

包com。举例。豆;进口龙目岛。数据;@Datapublic类SysUser {私有整数id私有字符串用户名;私有字符串图像;}包com。举例。控制器;导入com。举例。比恩。sys用户;导入com。举例。服务。sys用户服务;导入org。spring框架。豆子。工厂。注释。自动连线;导入org。spring框架。网络。绑定。注释。获取映射;导入org。spring框架。网络。绑定。注释。路径变量;导入org。spring框架。网络。绑定。注释。休息控制器;导入Java。util。ArrayList导入Java。util。hashmap导入Java。util。列表;导入Java。util。地图;@ RestControllerpublic class sys用户控制器{ @ auto wired private sys userservice sys userservice;@ get mapping(/getSysUserById/{ id } )sys user getSysUserById(@ path变量( id )String id){ ListString ids=new ArrayList();MapString,Integer info map=new HashMap();infoMap.put(1 ,1);infoMap.put(8 ,8);infoMap.put(9 ,9);身份证。添加(id);返回sysuserservice。getsysuserbyid(ids,infoMap);} }包com。举例。道;导入com。举例。比恩。sys用户;导入org。阿帕奇。伊巴提斯。注释。映射器;导入org。阿帕奇。伊巴提斯。注释。param导入Java。util。列表;导入Java。util。地图;@ mapper公共接口sys user mapper { sys user get sys user byid(@ Param( ids )ListString ids,@Param(infoMap) MapString,Integer infoMap);}包com。举例。服务;导入com。举例。比恩。sys用户;导入com。举例。道。sys用户映射器;导入org。spring框架。豆子。工厂。注释。自动连线;导入org。spring框架。刻板印象。服务;导入Java。util。列表;导入Java。util。地图;@Servicepublic类sys user service { @ auto wired private sys user mapper sys user mapper;public sys user getSysUserById(ListString id,MapString,Integer infoMap){ return sys user mapper。getSysUserById(ids,infoMap);}}?可扩展标记语言版本=1.0 编码=UTF八号?DOCTYPE Mapper PUBLIC -//mybatis。org//DTD Mapper 3.0//EN http://my batis。org/DTD/mybatis-3-Mapper。“DTD”映射器命名空间=“com。举例。道。sys用户映射器 select id= getSysUserById resultType= com。举例。比恩。sys user foreach collection= ids item= id bind name= userId value= infoMap[id]/select * from sys _ user其中id=#{userId

 

  

第一种采用#符的取值法

是可以防止结构化查询语言注入的,可以通过循环目录获取地图的值

 

  ?可扩展标记语言版本=1.0 编码=UTF八号?DOCTYPE Mapper PUBLIC -//mybatis。org//DTD Mapper 3.0//EN http://my batis。org/DTD/mybatis-3-Mapper。“DTD”映射器命名空间=“com。举例。道。sys用户映射器 select id= getSysUserById resultType= com。举例。比恩。sys user foreach collection= ids item= id !-bind name= userId value= infoMap[id]/-select * from sys _ user where id= $ { infoMap[id]} /foreach/select/mapper

  00-1010也可以获得。虽然不能阻止sql注入,但是可以通过检查白名单来阻止sql注入。

  00-1010我是白色的。以上只是我的个人经历。希望能给你一个参考,也希望你能支持它的盛行。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: