关于jdbcTemplate 条件查询的问题

DowneyGao 2017-04-14 05:53:03
我在做查询的时候 写的sql 语句是这样的
select scct.s_course_id,scct.start_time,scct.end_time,scct.modify_end_time,scct.s_course_name,scct.course_type,scct.s_course_type,scct.credit_hour,scct.course_period,scct.student_number,scct.college_name,scct.course_time,scct.term_id,scct2.sid as status from second_class_course_table as scct"
+ " left join (select s_course_id,sid from second_class_course_student where user_id=?)as scct2"
+ " on scct2.s_course_id=scct.s_course_id where 1=1";

if(null!=s_course_type){
sql +="and scct.s_course_type =?";
}
if(null!=course_type){
sql+=" and scct.course_type = ?";
}
if(null!=start_time){
sql+=" and scct.start_time = ?";

}if(null!=end_time){
sql+=" and scct.end_time = ?";
}
大概意思就是 如果有条件的话,就会加上这些条件查询,但是这个预编译的时候传参
jdbcTemplate.query(sql, new Object[]{user_id,

start_time,
end_time,
course_type,
s_course_type
}, selectClassListMapper);
除了第一个user_id以外,后面的参数都不一定有,查询会出错。。请问一下怎样才能让后面的传参也像sql判断的拼接一样
判断有参数的时候 才传入,没有就没有。
...全文
1023 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
LaOngDaoxing 2019-07-12
  • 打赏
  • 举报
回复
jdbcTemplate.query参数位置使用方法相同,下面举例使用List<Map<String,Object>> jdbcTemplate.queryForList查询。

/**
 * 
* @Title: querySpxxMap_dbBySsflbm 
* @Description: TODO(根据税收分类编码、企业id,联查商品信息表、税收分类编码表的,商品id+商品名称+规格型号+计量单位+税率+税收分类编码) 
* @param ssflbm
* @param qyid
* @return    设定文件 
* @return Map<String,Object>    返回类型 
* @throws
*/ 
public List<Map<String, Object>> querySpxxMap_dbBySsflbm(String ssflbm, String qyid) {
    String sql="select spxx.id,spxx.spmc,spxx.ggxh ,spxx.jldw,ss.slv ,ss.hbbm ssflbm "
            + "from t_jc_ssflbm ss "
            + "left join t_qy_spxx  spxx on spxx.ssflbm=ss.hbbm  "
            + "where ss.hbbm=? and spxx.qyid=?";
    //queryForList  参数写法1
    List<Object> conditionList = new ArrayList<Object>();
    conditionList.add(ssflbm);
    conditionList.add(qyid);
    List<Map<String, Object>> list1=jdbcTemplate.queryForList(sql,conditionList.toArray());
    //queryForList  参数写法2
    List<Map<String, Object>> list2=jdbcTemplate.queryForList(sql,new Object[] {ssflbm,qyid});
    return list1;
}
  • 打赏
  • 举报
回复
你直接用
if(null!=s_course_type){
sql =sql+"and scct.s_course_type ="+s_course_type;
}
这个不就好了

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧