sql in的参数化查询

来源:互联网 发布:wp8.1软件 编辑:程序博客网 时间:2024/04/30 14:11

  业务场景:假设excel表中有n条数据,需要将这你n条数据插入到数据库中,插入前需判断数据库中是否有该条数据,有则不插入,但是如果对excel中每条数据都遍历一次数据库很影响效率,所以老大要求先把excel表在数据库中重复的数据先找出来,放在一个list中,然后在逻辑中进行判断,这样就不用频繁访问数据库了。

  实现方式:最开始的想法就是写个如下的sql :

select  * from table a where a.id in ?

 ?里我是直接传个list进去的, 运行过程中发现是取不到数据的,然后后面很长时间都被这个问题困扰着,最后终于没办法了,遂请教同事,同事看了一眼,甩了一段query的setparameter的源代码给我:

  原来源代码中是先判断传进去的参数是否有参数名(name),然后才会判断传的值是否是集合,而我之前sql中的?是没有参数名的,就直接运行else里面的内容了,于是我将之前的sql语句换成了:

select  * from table a where a.id in :id

这样参数名就有了,程序也可以正常运行了,从中得到一个启示:我们现在做的工作基本上基于一些大型的框架,诚然这些框架为开发工作提供了很多便利,但是如果只会用框架而不知道其中的原理,感觉就是一般人口中的码农了,毕竟我们还有个高大上的的名字软件开发工程师,不是吗


0 0
原创粉丝点击