求大神 速度解决这个有关问题 ! mybatis 有关问题
求大神 速度解决这个问题 在线等!! mybatis 问题
<insert id="Studentc050_initExamShiti" parameterType="java.util.HashMap">
insert into dkkj_exam_user_shiti(chengjiid,shitiid,shititype,insDate,insUser)
select t1.id,t2.shitiID,t3.shititypeid,now(),'#{ip}'
from ppf_exam_kaojuan_base t1
join dkkj_exam_kaojuan_shiti_ts t2
join dkkj_exam_shiti_hdr t3 on t1.sjid = t2.id and t2.shitiID = t3.shitiId
where t1.id = #{id} and t2.shitiid not in (select shitiid from dkkj_exam_user_shiti where chengjiid = #{id}) and t2.shitiid in
<foreach collection="stids" item="item" open="(" separator="," close=")">
${item}
</foreach>
</insert>
这是sql代码
public void insertDaTi(int id, List<Studentc050DaanBean> dbs, String ip) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", id);
map.put("ip", ip);
List list = new ArrayList();
for (int i = 0; i < dbs.size(); i++) {
list.add(dbs.get(i).getStid());
}
map.put("stids", list);
getSqlSessionTemplate().insert("Studentc050_initExamShiti", map);
// getSqlSessionTemplate().insert("Studentc050_initExamShitiDtl", map);
// 不理睬异常
}
这是传参数的。。。 运行起来报错
SQL: insert into dkkj_exam_user_shiti(chengjiid,shitiid,shititype,insDate,insUser) select t1.id,t2.shitiID,t3.shititypeid,now(),'?' from ppf_exam_kaojuan_base t1 join dkkj_exam_kaojuan_shiti_ts t2 join dkkj_exam_shiti_hdr t3 on t1.sjid = t2.id and t2.shitiID = t3.shitiId where t1.id = ? and t2.shitiid not in (select shitiid from dkkj_exam_user_shiti where chengjiid = ?) and t2.shitiid in ( 319 , 326 , 324 , 325 , 312 , 316 , 311 , 318 , 322 , 321 , 323 , 317 , 308 , 320 , 309 , 314 )
### Cause: java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).
求解决 在线等
------解决思路----------------------
Parameter index out of range (3 > number of parameters, which is 2).--------参数下标越界(3比参数数量2大)
------解决思路----------------------
你sql里面有#{ip},#{id},#{id}三个,map.put()的时候只传了两个,它不会因为你之前put过#{id}而是别第三个id的
<insert id="Studentc050_initExamShiti" parameterType="java.util.HashMap">
insert into dkkj_exam_user_shiti(chengjiid,shitiid,shititype,insDate,insUser)
select t1.id,t2.shitiID,t3.shititypeid,now(),'#{ip}'
from ppf_exam_kaojuan_base t1
join dkkj_exam_kaojuan_shiti_ts t2
join dkkj_exam_shiti_hdr t3 on t1.sjid = t2.id and t2.shitiID = t3.shitiId
where t1.id = #{id} and t2.shitiid not in (select shitiid from dkkj_exam_user_shiti where chengjiid = #{id}) and t2.shitiid in
<foreach collection="stids" item="item" open="(" separator="," close=")">
${item}
</foreach>
</insert>
这是sql代码
public void insertDaTi(int id, List<Studentc050DaanBean> dbs, String ip) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", id);
map.put("ip", ip);
List list = new ArrayList();
for (int i = 0; i < dbs.size(); i++) {
list.add(dbs.get(i).getStid());
}
map.put("stids", list);
getSqlSessionTemplate().insert("Studentc050_initExamShiti", map);
// getSqlSessionTemplate().insert("Studentc050_initExamShitiDtl", map);
// 不理睬异常
}
这是传参数的。。。 运行起来报错
SQL: insert into dkkj_exam_user_shiti(chengjiid,shitiid,shititype,insDate,insUser) select t1.id,t2.shitiID,t3.shititypeid,now(),'?' from ppf_exam_kaojuan_base t1 join dkkj_exam_kaojuan_shiti_ts t2 join dkkj_exam_shiti_hdr t3 on t1.sjid = t2.id and t2.shitiID = t3.shitiId where t1.id = ? and t2.shitiid not in (select shitiid from dkkj_exam_user_shiti where chengjiid = ?) and t2.shitiid in ( 319 , 326 , 324 , 325 , 312 , 316 , 311 , 318 , 322 , 321 , 323 , 317 , 308 , 320 , 309 , 314 )
### Cause: java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).
求解决 在线等
------解决思路----------------------
Parameter index out of range (3 > number of parameters, which is 2).--------参数下标越界(3比参数数量2大)
------解决思路----------------------
你sql里面有#{ip},#{id},#{id}三个,map.put()的时候只传了两个,它不会因为你之前put过#{id}而是别第三个id的