Mobabel Blog

mybatis 动态参数及其 foreach collection使用 0

mybatis 动态参数及其 foreach collection使用

Mybatis里传参数入Mapper一般基于基本类型,Integer、String、List、Hashtable,然后以此构架foreach迭代动态sql。

但是这种方法只针对一级引用,如果参数是Object,比如将下面的Page作为参数传入,其中的PageData已经put了一个名为listName的List。

但是下面例子调用失败,mybatis无法辨认二级参数pd.listName是个List。

没找到直接解决办法,只能绕过foreach而采用String基本类型,尝试如下:

结果测试结果始终返回id为1的一个数据,而不是1,2,3,4,5,6六个数据。原因是带 #{} 的参数使用的是PreparedStatement,会有类型转换,最终注入sql的不是

而是加一层包装作为String注入:

解决办法,使用 $ {} 参数,这样mybatis不会做任何预处理,直接作为String使用。

注意 但是在mybatis中,”${xxx}”这样格式的参数会直接参与sql编译,从而不能避免注入攻击。在涉及到动态表名和列名时,只能使用“${xxx}”这样的参数格式,所以,这样的参数需要我们在代码中手工进行处理来防止注入。     参考 mybatis 传入参数及其 foreach collection的三种用法 https://stackoverflow.com/questions/11760074/mybatis-string-as-parameter Mybatis 中$和#千万不要乱用

[转]虎牙直播微服务改造实践-Nacos 0

[转]虎牙直播微服务改造实践-Nacos

本文将分为如下几个部分介绍虎牙在 DNS、服务注册、CMDB 和服务配置中心等方面的实践: 为什么选用 Nacos DNS-F 的技术价值和应用场景 服务注册的实践 CMDB 的应用和实践 服务配置的实践 Nacos 改造和升级总结

[转]阿里巴巴如何基于 Kubernetes 实践 CI/CD 0

[转]阿里巴巴如何基于 Kubernetes 实践 CI/CD

首先简单解释一下何为 Kubernetes 来帮助大家理解。Kubernetes 是一个生产可用的容器编排系统。Kubernetes 一方面在集群中把所有 Node 资源做一个资源池,然后它调度的单元是 Pod,当然 Pod 里面可以有多个容器。 就像一个人左手抓着 ECS 资源或计算资源,右手抓容器,然后把它们两个匹配起来,这样它就可以作为一个容器的编排系统。

[总结]分表分库后迁移和部署上线 0

[总结]分表分库后迁移和部署上线

如何部署 停机部署法 大致思路就是,挂一个公告,半夜停机升级,然后半夜把服务停了,跑数据迁移程序,进行数据迁移。

[汇总]边缘计算技术 0

[汇总]边缘计算技术

有了5G加持的边缘计算,会颠覆当前的物流行业吗? 谷歌微软阿里都在争抢的边缘计算究竟有什么好 物联网中的边缘计算

[汇总]CI/CD经验 0

[汇总]CI/CD经验

代码重构!你敢吗? 我们想了双流程验证的方案。 我们将重构部分的代码全部封装起来,然后提供一个新的接口,一个请求进来后,我们分别执行旧的业务逻辑,也将请求发给新接口。在流程的最后,我们将新旧流程构造出的字段,进行逐个字段的对比。新流程只验证正确性,不做实际的输出。