Spring JdbcTemplate+JdbcDaoSupport实例(和比较)

简介:  首先,数据库是这样的,很简单。当然,要引入spring的包,这里我全部导入了,省事。applicationContext.xml是这样的: [html] view plain copy                            ...

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

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

applicationContext.xml是这样的:

 

[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="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.   
  7.     <bean id="test" class="jdbc.Test">  
  8.     <property name="dataSource" ref="dataSource"></property>  
  9.     </bean>  
  10.   
  11.     <bean id="dataSource"  
  12.         class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  13.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
  14.         <property name="url" value="jdbc:mysql://localhost:3306/testspring" />  
  15.         <property name="username" value="root" />  
  16.         <property name="password" value="" />  
  17.     </bean>  
  18.   
  19. </beans>  

 

User.Java是这样的:

 

[java]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. package jdbc;  
  2.   
  3. public class User {  
  4.     private int id;  
  5.     private String name;  
  6.     private String password;  
  7.       
  8.     public int getId() {  
  9.         return id;  
  10.     }  
  11.     public void setId(int id) {  
  12.         this.id = id;  
  13.     }  
  14.     public String getName() {  
  15.         return name;  
  16.     }  
  17.     public void setName(String name) {  
  18.         this.name = name;  
  19.     }  
  20.     public String getPassword() {  
  21.         return password;  
  22.     }  
  23.     public void setPassword(String password) {  
  24.         this.password = password;  
  25.     }  
  26.       
  27. }  

 

下面来对比一下三种写法:

1、spring

 

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

 

2、JdbcTemplate 

 

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

 

3、JdbcDaoSupport

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

 

[java]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. package jdbc;  
  2.   
  3. import org.springframework.context.ApplicationContext;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5. import org.springframework.jdbc.core.support.JdbcDaoSupport;  
  6.   
  7. public class Test extends JdbcDaoSupport {  
  8.     //JdbcDaoSupport类已经有了public final void setDataSource(DataSource dataSource)了  
  9.     //不用重写也不能重写  
  10.       
  11.     public void insert(User u) {  
  12.         String sql = "insert into _user " + "values(null, ?, ?)";//普通的sql语句  
  13.         this.getJdbcTemplate().update(sql, new Object[]{u.getName(), u.getPassword()});  
  14.     }  
  15.   
  16.     public static void main(String[] args) {  
  17.         ApplicationContext ctx = new ClassPathXmlApplicationContext(  
  18.                 "applicationContext.xml");  
  19.         Test t = (Test) ctx.getBean("test");  
  20.           
  21.         User u = new User();  
  22.         u.setName("dd");  
  23.         u.setPassword("dd");  
  24.         t.insert(u);  
  25.     }  
  26. }  
目录
相关文章
|
3月前
|
SQL 数据库
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
这篇文章是Spring5框架的实战教程,深入讲解了如何使用JdbcTemplate进行数据库的批量操作,包括批量添加、批量修改和批量删除的具体代码实现和测试过程,并通过完整的项目案例展示了如何在实际开发中应用这些技术。
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
|
3月前
|
XML 数据库 数据格式
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
这篇文章是Spring5框架的实战教程的终结篇,介绍了如何使用注解而非XML配置文件来实现JdbcTemplate的数据库操作,包括增删改查和批量操作,通过创建配置类来注入数据库连接池和JdbcTemplate对象,并展示了完全注解开发形式的项目结构和代码实现。
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
|
3月前
|
SQL XML Java
Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
这篇文章是Spring5框架的实战教程,详细讲解了如何使用JdbcTemplate进行数据库的增删改查操作,包括在项目中引入依赖、配置数据库连接池、创建实体类、定义DAO接口及其实现,并提供了具体的代码示例和测试结果,最后还提供了完整的XML配置文件和测试代码。
Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
|
4月前
|
消息中间件 Java Kafka
Spring boot 自定义kafkaTemplate的bean实例进行生产消息和发送消息
Spring boot 自定义kafkaTemplate的bean实例进行生产消息和发送消息
175 5
|
3月前
|
XML Java 数据库
Spring5入门到实战------10、操作术语解释--Aspectj注解开发实例。AOP切面编程的实际应用
这篇文章是Spring5框架的实战教程,详细解释了AOP的关键术语,包括连接点、切入点、通知、切面,并展示了如何使用AspectJ注解来开发AOP实例,包括切入点表达式的编写、增强方法的配置、代理对象的创建和优先级设置,以及如何通过注解方式实现完全的AOP配置。
|
3月前
|
Java Spring
Spring Boot Admin 离线实例
Spring Boot Admin 离线实例
27 0
|
5月前
|
SQL Java 数据库连接
Spring5系列学习文章分享---第四篇(JdbcTemplate+概念配置+增删改查数据+批量操作 )
Spring5系列学习文章分享---第四篇(JdbcTemplate+概念配置+增删改查数据+批量操作 )
34 0
|
5月前
|
Java Maven Spring
Spring中AOP最简单实例-@注解形式
Spring中AOP最简单实例-@注解形式
39 0
|
5月前
|
XML Java Maven
Spring中AOP最简单实例-XML形式
Spring中AOP最简单实例-XML形式
24 0
|
5月前
|
移动开发 Java Maven
基于OSGi的Virgo Server最简单Spring web实例
基于OSGi的Virgo Server最简单Spring web实例
65 0