添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
直爽的黑框眼镜  ·  IBM Documentation·  2 年前    · 
乖乖的蜡烛  ·  python zipfile ...·  2 年前    · 
高大的荔枝  ·  sourcetree删除提交-掘金·  2 年前    · 
public void testIn(){ NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate); String s = "1,2,3,4"; MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("menuId",Arrays.asList(s)); List> list = namedParameterJdbcTemplate.queryForList("SELECT * FROM CSM_MENU WHERE MENU_ID IN (:menuId)",parameters); System.out.println(list.size());


度娘了很多种方法,都只能查询出来一条记录, 但实际上有四条数据。请问该如何正确的传递数据?

用这个NamedParameterJdbcTemplate来解决,不能直接用JdbcTemplate。

譬如sql为“select * from test_abc where id in (:param)”;

String sql = "select * from test_abc where id in (:param)";
List<Long> ids = new ArrayList<Long>();
ids.add(100l);
ids.add(101l);
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("param", ids);
NamedParameterJdbcTemplate jdbc = new NamedParameterJdbcTemplate(jdbcTemplate);
jdbc.query(sql, paramMap, new RowMapper<AlarmSheet>() {
	@Override
	public AlarmSheet mapRow(ResultSet rs, int index)
			throws SQLException {
		System.out.println("----- id="+rs.getLong("name"));
//				System.out.println(index+"----- id="+rs.getString("name"));
		return null;


测试的表结构如下
create table test_abc (
id integer,
name varchar(64),
age long

通过执行上述测试代码,由于rs.getLong("name")会出异常,看到实际这个sql已经变成如下了

org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [select * from test_abc where id in (?, ?)]; SQL state [99999]; error code [17059]; 无法转换为内部表示; nested exception is java.sql.SQLException: 无法转换为内部表示


 sql中in范围查询,实际根据传入参数的List个数,做了一些修改,而原生的JdbcTemplate不会这么做。  不得行, List<Map<String,Object>> list = jdbcTemplate.queryForList("SELECT * FROM CSM_MENU WHERE MENU_ID IN (?)",Arrays.asList(s)); 一条都没返回

  如果参数是这个 String s ="1,2,3,4";

那个 sql 需要 4个问号,参数也是4个,(你可以写一个工具类方法)

即: select * from emp where row_id in (?,?,?,?) 

params:1,2,3,4

in 查询的时候 问号里面 不要包含 ,  我这边是 OK 的

评论 (1)