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

来源:互联网 发布:巨灵数据 编辑:程序博客网 时间:2024/05/02 01:38
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;}

0 0
原创粉丝点击