初学SpringJDBC
来源:互联网 发布:淘宝单刷 编辑:程序博客网 时间:2024/06/05 08:22
Spring JDBC 入门
(1)JdbcTemplate:它创建和处理释放资源,帮助你避免常见的错误,如忘记关闭连接。它执行的基本任务的核心JDBC语句创建和执行等工作流程,离开应用程序代码提供SQL和提取结果。JdbcTemplate类可以执行SQL查询,update语句和存储过程调用,执行迭代结果集和提取返回的参数值。
使用query(select)进行查询操作。
示例:
int countOfActorsNamedJoe = this.jdbcTemplate.queryForObject("select count(*) from t_actor where first_name = ?", Integer.class, "Joe");
String lastName = this.jdbcTemplate.queryForObject("select last_name from t_actor where id = ?",new Object[]{1212L}, String.class);
Actor actor = this.jdbcTemplate.queryForObject("select first_name, last_name from t_actor where id = ?",new Object[]{1212L},new RowMapper<Actor>() {public Actor mapRow(ResultSet rs, int rowNum) throws SQLException {Actor actor = new Actor();actor.setFirstName(rs.getString("first_name"));actor.setLastName(rs.getString("last_name"));return actor;}});
当以上两个代码段存在于相同的应用程序,我们可以删除重复出现在两个RowMapper匿名内部类,并提取到一个单类(通常是一个静态嵌套类)然后引用DAO方法。例如:
public List<Actor> findAllActors() {return this.jdbcTemplate.query( "select first_name, last_name from t_actor", new ActorMapper());}private static final class ActorMapper implements RowMapper<Actor> {public Actor mapRow(ResultSet rs, int rowNum) throws SQLException {Actor actor = new Actor();actor.setFirstName(rs.getString("first_name"));actor.setLastName(rs.getString("last_name"));return actor;}}使用update(..)方法来执行插入、更新和删除操作。参数值通常作为var提供参数或者作为一个对象数组。
示例
this.jdbcTemplate.update("insert into t_actor (first_name, last_name) values (?, ?)","Leonor", "Watling");
this.jdbcTemplate.update("update t_actor set last_name = ? where id = ?","Banjo", 5276L);
this.jdbcTemplate.update("delete from actor where id = ?",Long.valueOf(actorId));其他JdbcTemplate操作:你可以使用execute(..)方法执行任意SQL语句,该方法通常用于DDL语句。
示例
this.jdbcTemplate.execute("create table mytable (id integer, name varchar(100))");
(2)NamedParameterJdbcTemplate:NamedParameterJdbcTemplate类增加了对编程的支持JDBC语句使用命名参数,而不是编程JDBC语句只使用经典的占位符(“?”参数。JdbcTemplate NamedParameterJdbcTemplate类包装,代表包装JdbcTemplate做大部分的工作。NamedParameterJdbcTemplate类的不同于JdbcTemplate本身,即编程JDBC语句使用命名参数。
示例
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;public void setDataSource(DataSource dataSource) {this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);}public int countOfActorsByFirstName(String firstName) {String sql = "select count(*) from T_ACTOR where first_name = :first_name";SqlParameterSource namedParameters = new MapSqlParameterSource("first_name", firstName);return this.namedParameterJdbcTemplate.queryForObject(sql, namedParameters, Integer.class);}
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;public void setDataSource(DataSource dataSource) {this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);}public int countOfActorsByFirstName(String firstName) {String sql = "select count(*) from T_ACTOR where first_name = :first_name";Map<String, String> namedParameters = Collections.singletonMap("first_name", firstName);return this.namedParameterJdbcTemplate.queryForObject(sql, namedParameters, Integer.class);}SqlParameterSource的实现类如下图:
SqlParameterSource命名参数的值来源于NamedParameterJdbcTemplate,MapSqlParameterSource类实现了java.util.Map接口,key/value键值对。
BeanPropertySqlParameterSource类实现SqlParameterSource接口。这个类封装任意JavaBean(也就是说,一个类的实例,遵循JavaBean约定),使用包装JavaBean的属性作为命名参数值的来源。
示例
public class Actor {private Long id;private String firstName;private String lastName;public String getFirstName() {return this.firstName;}public String getLastName() {return this.lastName;}public Long getId() {return this.id;}// setters省略......}
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;public void setDataSource(DataSource dataSource) {this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);}public int countOfActors(Actor exampleActor) {// 注意命名参数匹配Actor类中的属性String sql = "select count(*) from T_ACTOR where first_name = :firstName and last_name = :lastName";SqlParameterSource namedParameters = new BeanPropertySqlParameterSource(exampleActor);return this.namedParameterJdbcTemplate.queryForObject(sql, namedParameters, Integer.class);}NamedParameterJdbcTemplate类封装一个经典JdbcTemplate模板;如果你需要访问JdbcTemplate类中的方法,你可以使用getJdbcOperations()方法来访问
JdbcTemplate类实现了JdbcOperations接口。
0 0
- 初学SpringJDBC
- SpringJDBC
- SpringJDBC
- SpringJDBC
- SpringJDBC
- springJDBC
- springjdbc
- springJDBC
- SpringJdbc简介
- SpringJDBC--NamedParameterJdbcTemplate
- SpringJdbc查询,
- SpringJDBC 事务管理
- springJDBC使用
- SpringMVC + Spring + SpringJDBC整合
- struts2/spring/springJDBC优缺点
- SpringMVC3 + SpringJDBC整合
- SpringMVC3 + SpringJDBC整合
- SpringMVC3 + SpringJDBC整合
- get请求乱码问题....
- Intent/Bundle传递Bitmap的时候失败甚至崩溃
- jQuery之字体大小的设置
- HDU 1394 Minimum Inversion Number(线段树 || 树状数组+逆序数 )
- Android中webview拨打加载网页中的电话超链接
- 初学SpringJDBC
- JDBC基础
- 高德经纬度、百度经纬度、标准经纬度相互转换(VB.NET)
- Spring中task配文件中cron的理解链接
- PHP+Apache+MySQL整合
- [可用] java读取.properties配置文件的几种方法
- linux 常用命令
- 工厂模式
- Activity四种启动模式