Spring4.0学习14--使用NamedParameterJdbcTemplate

在 JDBC 模板中使用具名参数

在经典的 JDBC 用法中, SQL 参数是用占位符 ? 表示,并且受到位置的限制. 定位参数的问题在于, 一旦参数的顺序发生变化, 就必须改变参数绑定.
在 Spring JDBC 框架中, 绑定 SQL 参数的另一种选择是使用具名参数(named parameter).

具名参数: SQL 按名称(以冒号开头)而不是按位置进行指定. 具名参数更易于维护, 也提升了可读性. 具名参数由框架类在运行时用占位符取代
具名参数只在 NamedParameterJdbcTemplate 中得到支持

在 SQL 语句中使用具名参数时, 可以在一个 Map 中提供参数值, 参数名为键
也可以使用 SqlParameterSource 参数
批量更新时可以提供 Map 或 SqlParameterSource 的数组

示例:

可以为参数起名字
1.好处:若有多个参数,则不用再去对应位置,直接对应参数名,便于维护
2.缺点:较为麻烦

1
2
3
4
5
6
7
8
9
10
@Test
public void testNamedParameterJdbcTemplate() {
String sql = "insert into employees(id, last_name, email, dept_id) values(:id, :ln, :email, :deptid)";
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("id", 11);
paramMap.put("ln", "FF");
paramMap.put("email", "ff@");
paramMap.put("deptid", 2);
namedParameterJdbcTemplate.update(sql, paramMap);
}

使用具名参数时,可以使用 update(String sql, SqlParameterSource paramSource)
1.SQL 语句中的参数名和类的属性一致
2.使用 SqlParameterSource 的 BeanPropertySqlParameterSource 实现类作为参数

1
2
3
4
5
6
7
8
9
10
11
@Test
public void testNamedParameterJdbcTemplate2() {
String sql = "insert into employees(id, last_name, email, dept_id) values(:id, :lastName, :email, :deptid)";
Employee employee = new Employee();
employee.setLastName("00");
employee.setId(12);
employee.setEmail("00@");
employee.setDeptid(2);
SqlParameterSource parameterSource = new BeanPropertySqlParameterSource(employee);
namedParameterJdbcTemplate.update(sql, parameterSource);
}
Newer Post

Spring4.0学习15--事务管理(1)

1.事务简介事务管理是企业级应用程序开发中必不可少的技术, 用来确保数据的完整性和一致性.事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 举个例子:a给b转账1W,a的账户减少1W,b的账户增加1W,这就是一个事务。不能出现a少了1W而b账户得钱 …

继续阅读
Older Post

Spring4.0学习13--使用JdbcTemplate和JdbcDaoSupport

一、JdbcTemplate 简介 为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架.作为 Spring JDBC 框架的核心, JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法. 每个模板方法都能控制整个 …

继续阅读