Spring JDBC 例子

来源:互联网 发布:ug线切割编程教程 编辑:程序博客网 时间:2024/06/05 14:30

要了解有关Spring JDBC框架与JdbcTemplate类的概念,让我们写这将实现所有在下面Student表的CRUD操作的简单例子。

CREATE TABLE Student(   ID   INT NOT NULL AUTO_INCREMENT,   NAME VARCHAR(20) NOT NULL,   AGE  INT NOT NULL,   PRIMARY KEY (ID));

在开始之前,让我们使用Eclipse IDE,并按照下面的步骤来创建一个Spring应用程序:

步骤描述1Create a project with a name SpringExample and create a package com.yiibai under the src folder in the created project.2Add required Spring libraries using Add External JARs option as explained in the Spring Hello World Example chapter.3Add Spring JDBC specific latest libraries mysql-connector-java.jar,org.springframework.jdbc.jar and org.springframework.transaction.jar in the project. You can download required libraries if you do not have them already.4Create DAO interface StudentDAO and list down all the required methods. Though it is not required and you can directly write StudentJDBCTemplate class, but as a good practice, let's do it.5Create other required Java classes StudentStudentMapperStudentJDBCTemplate andMainApp under the com.yiibai package.6Make sure you already created Student table in TEST database. Also make sure your MySQL server is working fine and you have read/write access on the database using the give username and password.7Create Beans configuration file Beans.xml under the src folder.8The final step is to create the content of all the Java files and Bean Configuration file and run the application as explained below.

以下是数据访问对象接口文件StudentDAO.java的内容:

package com.yiibai;import java.util.List;import javax.sql.DataSource;public interface StudentDAO {   /**     * This is the method to be used to initialize    * database resources ie. connection.    */   public void setDataSource(DataSource ds);   /**     * This is the method to be used to create    * a record in the Student table.    */   public void create(String name, Integer age);   /**     * This is the method to be used to list down    * a record from the Student table corresponding    * to a passed student id.    */   public Student getStudent(Integer id);   /**     * This is the method to be used to list down    * all the records from the Student table.    */   public List<Student> listStudents();   /**     * This is the method to be used to delete    * a record from the Student table corresponding    * to a passed student id.    */   public void delete(Integer id);   /**     * This is the method to be used to update    * a record into the Student table.    */   public void update(Integer id, Integer age);}

以下是Student.java文件的内容:

package com.yiibai;public class Student {   private Integer age;   private String name;   private Integer id;   public void setAge(Integer age) {      this.age = age;   }   public Integer getAge() {      return age;   }   public void setName(String name) {      this.name = name;   }   public String getName() {      return name;   }   public void setId(Integer id) {      this.id = id;   }   public Integer getId() {      return id;   }}

以下是StudentMapper.java文件的内容:

package com.yiibai;import java.sql.ResultSet;import java.sql.SQLException;import org.springframework.jdbc.core.RowMapper;public class StudentMapper implements RowMapper<Student> {   public Student mapRow(ResultSet rs, int rowNum) throws SQLException {      Student student = new Student();      student.setId(rs.getInt("id"));      student.setName(rs.getString("name"));      student.setAge(rs.getInt("age"));      return student;   }}

下面是实现类文件StudentJDBCTemplate.java 定义DAO接口StudentDAO:

package com.yiibai;import java.util.List;import javax.sql.DataSource;import org.springframework.jdbc.core.JdbcTemplate;public class StudentJDBCTemplate implements StudentDAO {   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;   }}

以下是MainApp.java文件的内容:

package com.yiibai;import java.util.List;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.yiibai.StudentJDBCTemplate;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());     }}

以下是配置文件beans.xml文件:

<?xml version="1.0" encoding="UTF-8"?><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-3.0.xsd ">   <!-- 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.yiibai.StudentJDBCTemplate">      <property name="dataSource"  ref="dataSource" />       </bean>      </beans>

创建源代码和bean配置文件完成后,让我们运行应用程序。如果一切顺利,这将打印以下信息:

------Records Creation--------Created Record Name = Zara Age = 11Created Record Name = Nuha Age = 2Created Record Name = Ayan Age = 15------Listing Multiple Records--------ID : 1, Name : Zara, Age : 11ID : 2, Name : Nuha, Age : 2ID : 3, Name : Ayan, Age : 15----Updating Record with ID = 2 -----Updated Record with ID = 2----Listing Record with ID = 2 -----ID : 2, Name : Nuha, Age : 20

你可以尝试删除操作,我在例子中没有使用过,但现在你有一个工作的应用程序基于Spring的JDBC框架,它可以扩展到根据项目要求增加复杂的功能。还有其他的方法来访问,将使用针对NamedParameterJdbcTemplate和SimpleJdbcTemplate类的数据库,所以如果你有兴趣学习这些课程,请参考Spring框架手册。


转自:http://www.yiibai.com/spring/spring_jdbc_example.html

0 0
原创粉丝点击