codecamp

HasorDB SqlParameterSource(使用接口形式给动态SQL传参)

SqlParameterSource​是通过接口形式给动态 SQL 传参数,功效和 ​数组/Map​ 传参类似,不同的是编程性更强。

HasorDB 内置了两个实现,分别为:

  • MapSqlParameterSource ​将一个 Map 转换为 ​SqlParameterSource ​接口
  • BeanSqlParameterSource ​将一个 Bean 转换为 ​SqlParameterSource ​接口

下面用相同的功效列举不同的查询写法

使用数组传参

String querySql = "select * from test_user where age > ?";
Object[] queryArg = new Object[] { 40 };
List<Map<String, Object>> result = jdbcTemplate.queryForList(querySql, queryArg);

使用Map传参

String querySql = "select * from test_user where age > :age";
Map<String, Object> queryArg = Collections.singletonMap("age", 40);
List<Map<String, Object>> result = jdbcTemplate.queryForList(querySql, queryArg);

使用 MapSqlParameterSource 传参

使用 ​MapSqlParameterSource​ 传参,返回值为 ​List/Map

String querySql = "select * from test_user where age > :age";
Map<String, Object> queryArg = Collections.singletonMap("age", 40);
SqlParameterSource source = new MapSqlParameterSource(queryArg);
List<Map<String, Object>> result = jdbcTemplate.queryForList(querySql, source);

如果返回值希望是 ​List/DTO​ 可以使用下面这个方法

List<TestUser> result = jdbcTemplate.queryForList(querySql, source, TestUser.class);

使用 BeanSqlParameterSource 传参

使用 ​BeanSqlParameterSource​ 传参,返回值为 ​List/Map

String querySql = "select * from test_user where age > :age";
TestUser argDTO = new TestUser();
argDTO.setAge(40);

BeanSqlParameterSource source = new BeanSqlParameterSource(argDTO);
List<Map<String, Object>> result = jdbcTemplate.queryForList(querySql, source);

如果返回值希望是 ​List/DTO​ 可以使用下面这个方法

List<TestUser> result = jdbcTemplate.queryForList(querySql, source, TestUser.class);


HasorDB 流式读取超大表
HasorDB 使用原始连接
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }