spring--jdbctemplate

Spring JDBC框架

在使用普通的JDBC数据库时,就会很麻烦的写没必要要的代码来处理异常,打开和关闭数据库链接等。但Spring JDBC框架负责全部的低层细节,从开始打开链接,准备和执行SQL语句,处理异常,处理事务,到最后关闭链接。java

JdbcTemplate类

JdbcTemplate类执行SQL查询,更新语句和存储过程调用,执行迭代结果集和提取返回参数值。它也捕获JDBC异常并转换它们到org.springframework.dao包中定义的通用类,更多的信息,异常层次结构。mysql

JdbcTemplate类的实例是线程安全配置的。因此你能够配置JdbcTemplate的单个实例,而后将这个共享的引用安全地注入到多个DAOs中。spring

使用JdbcTemplate类时常见的作法是在你的Spring配置文件中配置数据源,而后共享数据源bean依赖注入到DAO类中,并在数据源的设值函数中建立了JdbcTemplate。sql

如今,咱们须要提供一个数据源到JdbcTemplate中,因此它能够配置自己来得到数据库访问。你能够在XML文件中配置数据源,其中一段代码以下所示:数据库

<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/TEST"/>
   <property name="username" value="root"/>
   <property name="password" value="password"/>
</bean>

数据访问对象(DAO)

DAO表明经常使用的数据库交互的数据访问对象。DAO提供一种方法来读取数据并将数据写入到数据库中,它们应该经过一个接口显示此功能,应用程序的其他部分将访问它们。安全

在Spring中,数据访问对象(DAO)支持很容易用统一的方法使用数据访问技术,如JDBC,Hibernate,JPA或者JDO。app

执行SQL语句

咱们看看如何使用SQL和jdbcTemplate对象在数据库表中执行CRUD(建立,读取,更新和删除)操做。框架

public class StudentJDBCTemplate  {
   private DataSource dataSource;
   private JdbcTemplate jdbcTemplateObject; 
   public void setDataSource(DataSource dataSource) {
      this.dataSource = dataSource;
      this.jdbcTemplateObject = new JdbcTemplate(dataSource);
   }
   public void create(String name, Integer age) {
      String SQL = "insert into Student (name, age) values (?, ?)";     
      jdbcTemplateObject.update( SQL, name, age);
      System.out.println("Created Record Name = " + name + " Age = " + age);
      return;
   }
   public Student getStudent(Integer id) {
      String SQL = "select * from Student where id = ?";
      Student student = jdbcTemplateObject.queryForObject(SQL, 
                        new Object[]{id}, new StudentMapper());
      return student;
   }
   public List<Student> listStudents() {
      String SQL = "select * from Student";
      List <Student> students = jdbcTemplateObject.query(SQL, 
                                new StudentMapper());
      return students;
   }
   public void delete(Integer id){
      String SQL = "delete from Student where id = ?";
      jdbcTemplateObject.update(SQL, id);
      System.out.println("Deleted Record with ID = " + id );
      return;
   }
   public void update(Integer id, Integer age){
      String SQL = "update Student set age = ? where id = ?";
      jdbcTemplateObject.update(SQL, age, id);
      System.out.println("Updated Record with ID = " + id );
      return;
   }
}
public class MainApp {
   public static void main(String[] args) {
      ApplicationContext context = 
             new ClassPathXmlApplicationContext("Beans.xml");
      StudentJDBCTemplate studentJDBCTemplate = 
      (StudentJDBCTemplate)context.getBean("studentJDBCTemplate");    
      System.out.println("------Records Creation--------" );
      studentJDBCTemplate.create("Zara", 11);
      studentJDBCTemplate.create("Nuha", 2);
      studentJDBCTemplate.create("Ayan", 15);
      System.out.println("------Listing Multiple Records--------" );
      List<Student> students = studentJDBCTemplate.listStudents();
      for (Student record : students) {
         System.out.print("ID : " + record.getId() );
         System.out.print(", Name : " + record.getName() );
         System.out.println(", Age : " + record.getAge());
      }
      System.out.println("----Updating Record with ID = 2 -----" );
      studentJDBCTemplate.update(2, 20);
      System.out.println("----Listing Record with ID = 2 -----" );
      Student student = studentJDBCTemplate.getStudent(2);
      System.out.print("ID : " + student.getId() );
      System.out.print(", Name : " + student.getName() );
      System.out.println(", Age : " + student.getAge());      
   }
}

 

<!-- Initialization for data source -->
   <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/TEST"/>
      <property name="username" value="root"/>
      <property name="password" value="password"/>
   </bean>

   <!-- Definition for studentJDBCTemplate bean -->
   <bean id="studentJDBCTemplate" 
      class="com.tutorialspoint.StudentJDBCTemplate">
      <property name="dataSource"  ref="dataSource" />    
   </bean>
相关文章
相关标签/搜索