您的位置:首页 > 其它

JdbcTemplate底层操作在IN语句中传入一组参数值实例

2015-05-11 10:46 411 查看
public List<Object> createPrivilege(int start,int end,String[] cards,String[] doors){
String cards_params="";
String doors_params="";
StringBuffer sql=null;
if(cards.length>0&&doors.length>0){
for(int i=0;i<cards.length;i++){
cards_params+=cards[i]+(i!=cards.length-1?",":"");//把字符串数组拆开拼接“,”最后一个拼接空字符串
}
for(int i=0;i<doors.length;i++){
doors_params+=doors[i]+(i!=doors.length-1?",":"");//把字符串数组拆开拼接“,”最后一个拼接空字符串
}
}
if(cards.length>0&&doors.length>0){
sql=new StringBuffer("SELECT  * from (SELECT door_id,card_id,device_name,dept_name,card_no,user_name,employee_id,station,subname,name,ROWNUM rn ");
sql.append(" from (SELECT T1.door_id,T1.ROOM_ID,T1.device_name,t2.station,t2.subname,t3.name from (SELECT  door_id,room_id,device_name  from");
sql.append(" t_device h1 INNER JOIN (SELECT door_id,device_id from t_gate_door WHERE door_id in ("+doors_params+")) ");//传入一组参数
sql.append(" h2 ON H1.device_id=H2.DEVICE_ID) t1 LEFT JOIN (SELECT r.roomid,st.station,st.subname from t_room r INNER JOIN t_station st on ");
sql.append(" r.substationid=st.substationid) t2 on t1.ROOM_ID=t2.roomid LEFT JOIN t_room t3 on t1.room_id=t3.roomid) , (SELECT ");
sql.append(" t1.card_id,t2.dept_name,t2.card_no,t2.user_name,t2.employee_id from ");
sql.append(" (SELECT  card_id from t_gate_card WHERE card_id in("+cards_params+")) ");//传入一组参数
sql.append(" t1 INNER JOIN (SELECT p1.card_id,p2.dept_name,p1.card_no,p2.user_name,p2.employee_id from ");
sql.append(" t_gate_card p1 INNER JOIN (SELECT u.user_id,u.user_name,u.employee_id,");
sql.append(" d.dept_name from t_gate_user u LEFT JOIN t_gate_dept d on u.dept_id=d.dept_id) p2 on p1.user_id=p2.user_id) t2");
sql.append(" on T1.card_id=T2.CARD_ID)  WHERE ROWNUM <="+end);
sql.append(" ) WHERE rn>"+start);
return this.getJdbcTemplate().query(sql.toString(), new getCreatePrivilege());
}
return null;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: