Spring + JdbcTemplate + JdbcDaoSupport examples
2015-08-24 02:21
531 查看
如何传递参数;返回结果如何转换为model;
In Spring JDBC development, you can use
In this tutorial, we will reuse the last Spring + JDBC example, to see the different between a before (No
1. Example Without
Witout
2. Example With
With
See the different?
3. Example With
By extended the
Note
In Spring JDBC development, it’s always recommended to use
In Spring JDBC development, you can use
JdbcTemplateand
JdbcDaoSupportclasses to simplify the overall database operation processes.
In this tutorial, we will reuse the last Spring + JDBC example, to see the different between a before (No
JdbcTemplatesupport) and after (With
JdbcTemplatesupport) example.
1. Example Without JdbcTemplate
Witout JdbcTemplate, you have to create many redundant codes (create connection , close connection , handle exception) in all the DAO database operation methods – insert, update and delete. It just not efficient, ugly, error prone and tedious.
private DataSource dataSource; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void insert(Customer customer){ String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)"; Connection conn = null; try { conn = dataSource.getConnection(); PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, customer.getCustId()); ps.setString(2, customer.getName()); ps.setInt(3, customer.getAge()); ps.executeUpdate(); ps.close(); } catch (SQLException e) { throw new RuntimeException(e); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) {} } } }
2. Example With JdbcTemplate
With JdbcTemplate, you save a lot of typing on the redundant codes, becuase
JdbcTemplatewill handle it automatically.
private DataSource dataSource; private JdbcTemplate jdbcTemplate; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void insert(Customer customer){ String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)"; jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.update(sql, new Object[] { customer.getCustId(), customer.getName(),customer.getAge() }); }
See the different?
3. Example With JdbcDaoSupport
By extended the JdbcDaoSupport, set the
datasourceand
JdbcTemplatein your class is no longer required, you just need to inject the correct
datasourceinto
JdbcCustomerDAO. And you can get the
JdbcTemplateby using a
getJdbcTemplate()method.
public class JdbcCustomerDAO extends JdbcDaoSupport implements CustomerDAO { //no need to set datasource here public void insert(Customer customer){ String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)"; getJdbcTemplate().update(sql, new Object[] { customer.getCustId(), customer.getName(),customer.getAge() }); }
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mkyongjava" /> <property name="username" value="root" /> <property name="password" value="password" /> </bean> </beans>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="customerDAO" class="com.mkyong.customer.dao.impl.JdbcCustomerDAO"> <property name="dataSource" ref="dataSource" /> </bean> </beans>
Note
In Spring JDBC development, it’s always recommended to use
JdbcTemplateand
JdbcDaoSupport, instead of coding JDBC code yourself.
相关文章推荐
- Spring + JDBC example
- 每日五题(Spring)
- Spring单实例、多线程安全、事务解析
- Spring IOC容器基本原理
- ThreadLocal在spring框架中的作用
- 编码总结一:Java默认字符集
- 【MySQL集群】——Java程序连接MySQL集群
- Spring Data JPA 入门篇
- Java DOM解析Xml中文乱码问题
- Atitit. 。Jna技术与 解决 java.lang.Error: Invalid memory access
- Atitit. 。Jna技术与 解决 java.lang.Error: Invalid memory access
- Atitit. 。Jna技术与 解决 java.lang.Error: Invalid memory access
- Java开发中的23种设计模式详解(转)
- java I/O
- 使用springMVC上传文件
- springmvc实现文件上传下载
- 利用Java正则表达式校验邮箱与手机号
- java正则表达式验证邮箱、IP地址、手机号码
- 摘抄笔记--《编写高质量代码:改善Java程序的151个建议》
- java之 ------ 枚举类型