Java预编译SQL in怎么赋值

Java预编译SQL in怎么赋值,第1张

sqlin使用方法:

1.in后条件不多,可以考虑主表建索引,或用unionall代替

2.in和exists的区别:如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in,反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists。其实我们区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询,所以我们会以驱动表的快速返回为目标,那么就会考虑到索引及结果集的关系了,另外IN时不对NULL进行处理。

3.如果in后接几百几千或几万的条件,可把in里的条件录入临时表,给临时表加索引,用表连接代替。

调用存储过程是java 把组合起来的字符串传到数据库后台 *** 作,如果你in ( pkStagesPersonArray),传到数据库后台还是 in ( pkStagesPersonArray) 而非你想要的 in('1330251','1336140' )所以你应该把pkStagesPersonArray 里面的内容转换成 '1330251','1336140' 再拼接起来

在service中把参数放到HashMap中

List<String>list = new ArrayList<String>()

list.add("x")

list.add("y")

list.add("z")

String s = "A"

Date d = new Date()

HashMap<String,Object>param = new HashMap<String,Object>()

param.put("list",list)

param.put("s",s)

param.put("d",d)

XXXDao.queryXXX(param)

在Mybatis的Mapper中是这么写:

<select id = "queryXXX",resultType = "XXX", paramterType = "java.lang.HashMap">

select * from tab where zi_duan1 = #{s} and zi_duan2 = #{d}

and zi_duan3 in

<foreach item="item" index="index" collection="list" open="("

separator="," close=")">

#{item}

</foreach>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9623344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存