HasorDB SqlParameterSource(使用接口形式給動態(tài)SQL傳參)

2022-01-10 10:03 更新

?SqlParameterSource?是通過接口形式給動態(tài) SQL 傳參數(shù),功效和 ?數(shù)組/Map? 傳參類似,不同的是編程性更強(qiáng)。

HasorDB 內(nèi)置了兩個實(shí)現(xiàn),分別為:

  • ?MapSqlParameterSource ?將一個 Map 轉(zhuǎn)換為 ?SqlParameterSource ?接口
  • ?BeanSqlParameterSource ?將一個 Bean 轉(zhuǎn)換為 ?SqlParameterSource ?接口

下面用相同的功效列舉不同的查詢寫法

使用數(shù)組傳參?

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);


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號