Spring + JdbcTemplate + JdbcDaoSupport

首先,数据库是这样的,很简单。

当然,要引入spring的包,这里我全部导入了,省事。

applicationContext.xml是这样的:

[html] view plain copy
  1. < span>xmlversion="1.0"encoding="UTF-8"?<
  2. < span>beansxmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="  
  5.     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"<
  6. < span>beanid="test"class="jdbc.Test"<
  7. < span>propertyname="dataSource"ref="dataSource"<</>property<
  8. </>bean<
  9. < span>beanid="dataSource"
  10. class="org.springframework.jdbc.datasource.DriverManagerDataSource"<
  11. < span>propertyname="driverClassName"value="com.mysql.jdbc.Driver"/<
  12. < span>propertyname="url"value="jdbc:mysql://localhost:3306/testspring"/<
  13. < span>propertyname="username"value="root"/<
  14. < span>propertyname="password"value=""/<
  15. </>bean<
  16. </>beans<

User.java是这样的:

[java] view plain copy
  1. package jdbc;  
  2. publicclass User {  
  3. privateint id;  
  4. private String name;  
  5. private String password;  
  6. publicint getId() {  
  7. return id;  
  8.     }  
  9. publicvoid setId(int id) {  
  10. this.id = id;  
  11.     }  
  12. public String getName() {  
  13. return name;  
  14.     }  
  15. publicvoid setName(String name) {  
  16. this.name = name;  
  17.     }  
  18. public String getPassword() {  
  19. return password;  
  20.     }  
  21. publicvoid setPassword(String password) {  
  22. this.password = password;  
  23.     }  
  24. }  
下面来对比一下三种写法:

1、spring

[java] view plain copy
  1. package jdbc;  
  2. import java.sql.Connection;  
  3. import java.sql.PreparedStatement;  
  4. import java.sql.SQLException;  
  5. import javax.sql.DataSource;  
  6. import org.springframework.context.ApplicationContext;  
  7. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  8. publicclass Test {  
  9. private DataSource dataSource;  
  10. publicvoid setDataSource(DataSource dataSource) {  
  11. this.dataSource = dataSource;  
  12.     }  
  13. publicvoid insert(User u) {  
  14.         String sql = "insert into _user " + "values(null, ?, ?)";//普通的sql语句
  15.         Connection conn = null;  
  16. try {  
  17.             conn = dataSource.getConnection();  
  18.             PreparedStatement ps = conn.prepareStatement(sql);  
  19.             ps.setString(1, u.getName());  
  20.             ps.setString(2, u.getPassword());  
  21.             ps.executeUpdate();  
  22.             ps.close();  
  23.         } catch (SQLException e) {  
  24. thrownew RuntimeException(e);  
  25.         } finally {  
  26. if (conn != null) {  
  27. try {  
  28.                     conn.close();  
  29.                 } catch (SQLException e) {  
  30.                 }  
  31.             }  
  32.         }  
  33.     }  
  34. publicstaticvoid main(String[] args) {  
  35.         ApplicationContext ctx = new ClassPathXmlApplicationContext(  
  36. "applicationContext.xml");  
  37.         Test t = (Test) ctx.getBean("test");  
  38.         User u = new User();  
  39.         u.setName("dd");  
  40.         u.setPassword("dd");  
  41.         t.insert(u);  
  42.     }  
  43. }  
运行结果是这样的:


2、JdbcTemplate 

[java] view plain copy
  1. package jdbc;  
  2. import java.sql.Connection;  
  3. import java.sql.PreparedStatement;  
  4. import java.sql.SQLException;  
  5. import javax.sql.DataSource;  
  6. import org.springframework.context.ApplicationContext;  
  7. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  8. import org.springframework.jdbc.core.JdbcTemplate;  
  9. publicclass Test {  
  10. private DataSource dataSource;  
  11. publicvoid setDataSource(DataSource dataSource) {  
  12. this.dataSource = dataSource;  
  13.     }  
  14. publicvoid insert(User u) {  
  15.         String sql = "insert into _user " + "values(null, ?, ?)";//普通的sql语句
  16.         JdbcTemplate template = new JdbcTemplate(dataSource);  
  17.         template.update(sql, new Object[]{u.getName(), u.getPassword()});  
  18.     }  
  19. publicstaticvoid main(String[] args) {  
  20.         ApplicationContext ctx = new ClassPathXmlApplicationContext(  
  21. "applicationContext.xml");  
  22.         Test t = (Test) ctx.getBean("test");  
  23.         User u = new User();  
  24.         u.setName("dd");  
  25.         u.setPassword("dd");  
  26.         t.insert(u);  
  27.     }  
  28. }  
可以看得出简单了很多,不用Connection了。

3、JdbcDaoSupport

这个更简单,不用new JdbcTemplate了。

[java] view plain copy
  1. package jdbc;  
  2. import org.springframework.context.ApplicationContext;  
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  4. import org.springframework.jdbc.core.support.JdbcDaoSupport;  
  5. publicclass Test extends JdbcDaoSupport {  
  6. //JdbcDaoSupport类已经有了public final void setDataSource(DataSource dataSource)了
  7. //不用重写也不能重写
  8. publicvoid insert(User u) {  
  9.         String sql = "insert into _user " + "values(null, ?, ?)";//普通的sql语句
  10. this.getJdbcTemplate().update(sql, new Object[]{u.getName(), u.getPassword()});  
  11.     }  
  12. publicstaticvoid main(String[] args) {  
  13.         ApplicationContext ctx = new ClassPathXmlApplicationContext(  
  14. "applicationContext.xml");  
  15.         Test t = (Test) ctx.getBean("test");  
  16.         User u = new User();  
  17.         u.setName("dd");  
  18.         u.setPassword("dd");  
  19.         t.insert(u);  
  20.     }  
  21. }  
三种方法哪一种更简单一目了然。

我参考的文章:Spring + JdbcTemplate + JdbcDaoSupport Examples

你可能感兴趣的:(Spring + JdbcTemplate + JdbcDaoSupport)