mybatis 入参 map,mybatis 查询返回map类型
目录
通过出入地图参数作为条件进行查询框架查询传递地图参数使用场景传参持久层生成结构化查询语言查询结果
通过出入Map参数作为条件进行查询
映射文件中查询语句部分:
!- 通过地图进行条件查询-select id=按映射选择结果类型= com。黑克图。测试包。POJO。产品从产品中选择*其中prod_price=#{prodPrice}和prod_desc=#{prodDesc}/select接口文件中对应的查询方法:
//输入参数为地图的条件查询产品选择映射(MapString,对象映射);测试代码:
//.前面有创建会话工厂对象和使用对象的代码MapString,Object map=new HashMap();map.put(prodPrice , 11.99 );map.put(prodDesc , 18寸泰迪熊,自带帽子和外套);产品映射器映射器=SQL会话。获取映射器(产品映射器。类);产品产品=映射器。selectbymap(地图);System.out.println(产品);地图中的键值与映射文件中的挑选语句#{}占位符中的值需要一一对应
在框架中,任何传入的参数都会被对应封装成地图集合,然后会以地图的键=值形式取值。
对传入的参数是目录集合,mybatis会对目录集合进行特殊处理,其取值方式通过列表[下标]或集合[下标]的方式入参取值。
对于数组,Mybatis同样会做特殊处理,它会对数组采用数组[下标]的方式入参取值。
!- 如果是目录集合(或设置集合)就如下入参取值-select id=按映射选择结果类型= com。黑克图。测试包。POJO。产品从产品中选择*其中prod_price=#{list[0]}和prod _ desc=# { collection[1]}/select!- 如果是数组就如下入参取值-select id=按映射选择结果类型= com。黑克图。测试包。POJO。产品从产品中选择*其中prod_price=#{array[0]}和生产desc=# {阵列[1]}/选择
Mybatis查询传递Map参数
使用场景
我的诱饵传递地图查询数据,选择里面的判断根据自己的地图参数类型自行使用,这里传的价值是目标类型,这里用不到
select id= getObjectByMap 参数type= map 结果映射=基本结果映射 select include refid= Base _ Column _ List /from s _ app其中foreach collection= map item= v index= k separator= and if test= v!=空和v!= ${k}=#{v} /if!-选择when test= v integer的实例 if test= v!=null $ { k }=# { v }/if/when when test= v instance of list if test= v!=null and v . size()0 $ { k } in foreach collection= list item= v separator=, open=( close=) # { v }/foreach/if/when when test= v instance of array if test= v!=空和foreach集合中的v . length 0 $ { k }= array item= v separator=, open=( close=) # { v }/foreach/if/when否则if test=v!=空和v!= $ { k }=# { v }/if/otherwise/choose-/foreach/where/select这里需要注意的一点是${K},首先地图的键一定要跟数据表字段保持一致。如果这里的${K}写成了#{K}则生成的结构化查询语言语句如下所示:
程序不会报错,条件无效。${}和#{}的区别相信大家都了解,简单概括就是一个是替换占位符,一个是当做参数传入
传参
@ post映射({ demo })公共Ajax结果演示(String appNo,String name){ Map Map=Map。of(应用编号,应用编号,客户名称,名称);地图对象=服务。getobjectbymap(地图);返回成功(object by map);}
持久层
公共接口AppMapper扩展BaseMapperSApp { SApp getObjectByMap(@ Param( map )MapString,Object map);}
生成sql
查询结果
总结:这样的好处是参数的个数不固定、参数的类型不固定,适用的场景较多。缺点也很明显地图传参可读性差,参数难以控制等。以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行它.
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。