具名参数:SQL 按名称(以冒号开头)而不是按位置进行指定,具名参数更易于维护,,也提升了可读性 。具名参数由框架类在运行时用占位符取代,具名参数只在NamedParameterJdbcTemplate 中得到支持 。
NamedParameterJdbcTemplate类拓展了JdbcTemplate类,可以使用全部jdbcTemplate方法 。
NamedParameterJdbcTemplate主要提供以下三类方法:execute方法、query及queryForXXX方法、update及batchUpdate方法 。
NamedParameterJdbcTemplate可以使用DataSource或JdbcTemplate 对象作为构造器参数初始化 。
常用API传入参数类型介绍NamedParameterJdbcTemplate类为命名参数设值有两种方式:java.util.Map 、RowMapper 和 SqlParameterSource 。
Map<String,?> paramMap就是一个hash表,好处是可以根据参数名传参,paramMap.put(“sqlparamName”,value) 。
RowMapper rowMapper这个接口为了实现sql查询结果和对象间的转换,可以自己实现,也可以使用系统实现,主要实现类有:
SingleColumnRowMapper ,sql结果为一个单列的数据,如List<String> , List<Integer>,String,Integer等BeanPropertyRowMapper, sql结果匹配到对象 List< XxxVO> , XxxVOSqlParameterSource其作用和Map一样,就是为sql中的条件参数赋值,默认实现有 :
MapSqlParameterSource实现非常简单,只是封装了java.util.Map 。BeanPropertySqlParameterSource封装了一个JavaBean对象,通过JavaBean对象属性来决定命名参数的值 。EmptySqlParameterSource 一个空的SqlParameterSource ,常用来占位使用 。//BeanPropertySqlParameterSource传参方式SqlParameterSource sps = new BeanPropertySqlParameterSource(javaBean);//MapSqlParameterSource传参方式SqlParameterSource sps = new MapSqlParameterSource();//保证参数名和key相同sps.addValue("key",value);API介绍查询返回单行单列数据
public < T > T queryForObject(String sql, Map<String, ?> paramMap, Class<T> requiredType)public < T > T queryForObject(String sql, SqlParameterSource paramSource, Class<T> requiredType)
Integer count = template.queryForObject("select count(*) from student", new HashMap<>(), Integer.class);String name = template.queryForObject( "select name from student where home_addresslimit 1 ", EmptySqlParameterSource.INSTANCE, String.class); 返回 (多行)单列 数据
public < T> List< T> queryForList(String sql, Map<String, ?> paramMap, Class< T > elementType)public < T> List< T> queryForList(String sql, SqlParameterSource paramSource, Class< T> elementType)
List< String> namelist = template.queryForList("select name from student", new HashMap<>(), String.class);返回单行数据
public < T> T queryForObject(String sql, Map< String, ?> paramMap, RowMapper< T>rowMapper)public < T> T queryForObject(String sql, SqlParameterSource paramSource, RowMapper< T> rowMapper)
Studentstu = template.queryForObject("select * from student limit 1", new HashMap<>(), new BeanPropertyRowMapper<Student>(Student.class));//BeanPropertyRowMapper会把下划线转化为驼峰属性//结果对象可比实际返回字段多或者少注意:这两个API也可以使用SingleColumnRowMapper返回单行单列数据
String name = template.queryForObject("select name from student limit 1", EmptySqlParameterSource.INSTANCE, new SingleColumnRowMapper<>(String.class));返回Map形式的单行数据
public Map< String, Object> queryForMap(String sql, Map< String, ?> paramMap)public Map< String, Object> queryForMap(String sql, SqlParameterSource paramSource)
Map< String, Object> studentMap = template.queryForMap("select * from student limit 1", new HashMap<>());注意:queryForMap这个方法要求结果必须是有数据的,否则会报错 。
返回多行数据
public < T> List< T> query(String sql, Map< String, ?> paramMap, RowMapper< T> rowMapper)public < T> List< T> query(String sql, SqlParameterSource paramSource, RowMapper< T> rowMapper)public < T> List< T> query(String sql, RowMapper< T> rowMapper)
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 一升是多少斤水
- 解析复选框的checked属性 js如何判断checkbox是否选中
- xo怎么喝才好喝
- 2021年省钱的返利app排名 返利商品怎么入账
- 好用的照相软件排名 什么相机软件好用有实惠
- 一个完整的网上商城的源码 php商城系统技术难点
- 神话中鸟的名字除了精卫还有哪些
- 买来的螃蟹怎么保存
- 这3种人,一定会得到佛菩萨的加持 身上有菩萨跟着的人
- 《长津湖之水门桥》每个人的结局是什么