您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Spring JDBC 框架使用JdbcTemplate 类的一个实例

bubuko 2022/1/25 19:50:59 java 字数 25121 阅读 1054 来源 http://www.bubuko.com/infolist-5-1.html

JDBC 框架概述 在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等。但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQL 语句,处理异常,处理事务,到最后关闭连接。 所以当从数据库中获取数据时,你所做的是定义连接参数, ...

JDBC 框架概述

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

所以当从数据库中获取数据时,你所做的是定义连接参数,指定要执行的 SQL 语句,每次迭代完成所需的工作。

Spring JDBC 提供几种方法和数据库中相应的不同的类与接口。我将给出使用 JdbcTemplate 类框架的经典和最受欢迎的方法。这是管理所有数据库通信和异常处理的中央框架类。

JdbcTemplate 类

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

JdbcTemplate 类的实例是线程安全配置的。所以你可以配置 JdbcTemplate 的单个实例,然后将这个共享的引用安全地注入到多个 DAOs 中。

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

环境:导入: mysql-connector-java.jarorg.springframework.jdbc.jar这两个包

 

1.创建数据访问对象接口文件 StudentDAO.java 的内容:

 1 package com.spring.jdbcTemplate;
 2 
 3 import java.util.List;
 4 
 5 import javax.sql.DataSource;
 6 /**
 7  * 接口StudentDao,是用来封装查询方法
 8  * @author Administrator
 9  *
10  */
11 
12 public interface StudentDao {
13     
14     public void setDataSource(DataSource ds);
15     //添加记录
16     public void addStudent(String name,Integer age);
17     //通过Student ID查询学生记录,返回值为Student类型
18     public Student getStudentId(Integer id);
19     //删除数据通过Student ID
20     public void delectStudent(Integer id);
21     //更新数据
22     public void updata(Integer id,Integer age);
23     //查询所有数据
24     public List<Student> SelectAllStudent();
25 }

 

2.创建一个实体类Student:

 1 package com.spring.jdbcTemplate;
 2 
 3 public class Student {
 4     /**
 5      * 定义学生类
 6      */
 7     private String name;
 8     private Integer age;
 9     private Integer id;
10 
11     public Integer getId() {
12         return id;
13     }
14 
15     public void setId(Integer id) {
16         this.id = id;
17     }
18 
19     public String getName() {
20         return name;
21     }
22 
23     public void setName(String name) {
24         this.name = name;
25     }
26 
27     public Integer getAge() {
28         return age;
29     }
30 
31     public void setAge(Integer age) {
32         this.age = age;
33     }
34 
35     public void printAdvice() {
36         System.out.println("name:" + name + ",age:" + age);
37 
38     }
39 
40 }

 

3.创建一个StudentMapper.java 文件,用来映射结果集(通常用于查询语句~)内容如下:

 1 package com.spring.jdbcTemplate;
 2 
 3 import java.sql.ResultSet;
 4 import java.sql.SQLException;
 5 
 6 import org.springframework.jdbc.core.RowMapper;
 7 
 8 public class StudentMapper implements RowMapper<Student>{
 9     /**
10      * 接口RowMapper被JdbcTemplate 用来映射每一行结果集的数据  
11      * JdbcTemplate 用来执行query方法或者调用存储过程 包含方法mapRow(ResultSet rs, int rowNum)
12      * 第一个参数表示获取到的结果集、第二个表示结果集中获取到的结果个数,通常用于查询语句~
13      */
14     @Override
15     public Student mapRow(ResultSet rs, int row) throws SQLException {
16         Student student=new Student();
17         student.setId(rs.getInt("id"));
18         student.setName(rs.getString("name"));
19         student.setAge(rs.getInt("age"));
20         return student;
21     }
22 
23 }

 

4.下面是为定义的 DAO 接口 StudentDAO 的实现类文件 StudentJDBCTemplate.java,具体实现到数据库的操作

 1 package com.spring.jdbcTemplate;
 2 
 3 import java.util.List;
 4 
 5 import javax.sql.DataSource;
 6 
 7 import org.springframework.jdbc.core.JdbcTemplate;
 8 /**
 9  * 利用Spring 内置jdbc JdbcTemplate来实现StudentDao接口,连接数据库。
10  * @author Administrator
11  *
12  */
13 public class StudentJdbcTemplate implements StudentDao {
14     private DataSource dataSource;
15     private JdbcTemplate jdbcTemplateObject;
16 
17     // 设置数据源
18     @Override
19     public void setDataSource(DataSource dataSource) {
20         this.dataSource = dataSource;
21         this.jdbcTemplateObject = new JdbcTemplate(dataSource);
22     }
23 
24     // 添加学生数据
25     @Override
26     public void addStudent(String name, Integer age) {
27         String sql = "insert into Student(name,age) value(?,?)";
28         jdbcTemplateObject.update(sql, name, age);
29         System.out.println("Created Record Name = " + name + " Age = " + age);
30         return;
31     }
32 
33     // 查询学生
34     @Override
35     public Student getStudentId(Integer id) {
36         String sql = "select * from Student where id=?";
37         Student student = jdbcTemplateObject.queryForObject(sql, new Object[] { id }, new StudentMapper());
38         return student;
39     }
40 
41     // 删除学生记录
42     @Override
43     public void delectStudent(Integer id) {
44         String sql = "delete  from Student where id=?";
45         jdbcTemplateObject.update(sql, id);
46         System.out.println("Deleted Record with ID = " + id);
47         return;
48     }
49     //更新数据
50     @Override
51     public void updata(Integer id,Integer age) {
52         String SQL = "update Student set age = ? where id = ?";
53         jdbcTemplateObject.update(SQL, age, id);
54         System.out.println("Updated Record with ID = " + id);
55         return;
56     }
57     //查询所有数据
58     @Override
59     public List<Student> SelectAllStudent() {
60         String SQL = "select * from Student";
61         List<Student> students = jdbcTemplateObject.query(SQL, new StudentMapper());
62         return students;
63     }
64 
65 
66 }

 

5.建立一个 MainApp.java 文件,用于测试。内容如下:

 1 package com.spring.jdbcTemplate;
 2 
 3 import java.util.List;
 4 
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6 import org.springframework.jdbc.core.JdbcTemplate;
 7 
 8 public class MainApp {
 9 
10     public static void main(String[] args) {
11         ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring_xml/bean.xml");
12             //获取getBean("StudentJdbcTemplate")对象,调用其方法操作数据库
13         StudentJdbcTemplate jdbcTemplate = (StudentJdbcTemplate)applicationContext.getBean("StudentJdbcTemplate");
14         
15             //插入数据
16         /*    jdbcTemplate.addStudent("张三", 23);
17             jdbcTemplate.addStudent("李四", 24);
18             jdbcTemplate.addStudent("王五", 25);
19             jdbcTemplate.addStudent("赵六", 26);
20             jdbcTemplate.addStudent("田七", 27);*/
21             
22             //查询所有数据
23         /*    List<Student> list=jdbcTemplate.SelectAllStudent();
24             for(Student student:list){
25                 System.out.println(student.getId()+student.getName()+student.getAge());
26             }*/
27             //查询单条记录
28         /*    Student student=jdbcTemplate.getStudentId(1);
29             System.out.println(student.getId()+student.getName()+student.getAge());*/
30             
31             //删除单条记录
32             /*jdbcTemplate.delectStudent(2);*/
33             
34             //更新数据
35             jdbcTemplate.updata(3, 45);
36     }
37 
38 }

 

测试结果:

技术分享图片

 

Spring JDBC 框架使用JdbcTemplate 类的一个实例

原文:https://www.cnblogs.com/ysource/p/12869779.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶