JdbcTemplate接收List<T>作为参数进行查询

本文详细介绍如何使用Spring框架中的JDBC模板进行不同类型的参数查询,包括普通参数查询、List参数查询以及混合参数查询,提供了具体代码示例,帮助开发者理解和掌握Spring JDBC模板的灵活应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

@Autowired
private JdbcTemplate mdcJdbcTemplate;

//普通参数查询
public void normalQuery(String param1, String param2) {
      String sql = "SELECT name,sex FROM table_name WHERE colName1 = ? AND colName2 = ?";
      
      //执行sql 并循环遍历每一行的结果,逻辑自行操作
      mdcJdbcTemplate.query(sql, new Object[]{param1, param2}, (rs, i)->{
           //编辑rs
           return null;
      });  
}


//List<T> 作为参数
public void listQuery(List<String> paramList) {
      //查询语句
      String sql = "SELECT * FROM table_name WHERE id in (:ids)";
      //设置参数 用map接收
      Map<String, Object> paramMap = new HashMap<String, Object>();
      //这里的ids 必须和sql语句里的参数ids 名称一致
      paramMap.put("ids", paramList);

      //这里改成用 NamedParameterJdbcTemplate 进行查询
      NamedParameterJdbcTemplate jdbc = new NamedParameterJdbcTemplate(mdcJdbcTemplate);
      //执行sql 并循环遍历每一行的结果,逻辑自行操作
      jdbc.query(sql, paramMap , (rs, i)->{
           //编辑rs
           return null;
      });  
}


//既有单个参数也有list
public void listQuery(String param1, List<String> paramList) {
    //查询语句
      String sql = "SELECT * FROM table_name WHERE id in (:ids) AND type = :param1";
      //设置参数 用map接收
      Map<String, Object> paramMap = new HashMap<String, Object>();
      //这里的ids 必须和sql语句里的参数ids 名称一致
      paramMap.put("ids", paramList);
      paramMap.put("param1", param1);

      //这里改成用 NamedParameterJdbcTemplate 进行查询
      NamedParameterJdbcTemplate jdbc = new NamedParameterJdbcTemplate(mdcJdbcTemplate);
      //执行sql 并循环遍历每一行的结果,逻辑自行操作
      jdbc.query(sql, paramMap , (rs, i)->{
           //编辑rs
           return null;
      });  
}

 

阅读一下这段代码,并帮我讲解一下其中的原理: /** * 根据车牌号查询 * @return */ @PostMapping("/byLicensePlate") public AjaxResult queryByLicensePlate(@RequestBody List<String> licensePlateNumber) { return AjaxResult.success(vehicleIdentifyService.getLicensePlate(licensePlateNumber)); } public Map getLicensePlate(List<String> licensePlateNumber) { Map<String,Object> result = new HashMap(); String startTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,DateUtils.getTodayStartTime()); String endTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,DateUtils.getTodayEndTime()); StringBuilder selectSql = new StringBuilder("select * "); StringBuilder sql = new StringBuilder(" "); if(CollectionUtil.isNotEmpty(licensePlateNumber)) { List<String> quotedPlates = licensePlateNumber.stream() .map(l -> "'" + l + "'") .collect(Collectors.toList()); sql.append("from device.vehicleidentify where vehicleno ") .append("in (") .append(StringUtils.join(quotedPlates, ",")) .append(") "); sql.append(" and rectime >= '").append(startTime).append("'"); sql.append(" and rectime <= '").append(endTime).append("'"); selectSql.append(sql); List<VehicleIdentify> vehicleIdentifies = vehicleIdentifyDao.querySql(selectSql.toString()); result.put("vehicleIdentifies",vehicleIdentifies); return result; }else { throw new RuntimeException("车牌号不能为空"); } } @Override public List<T> querySql(String sql) { return tDengineJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(entityClass)); }
最新发布
07-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值