Spring知识点总结(五)Spring整合JDBC

 1. 回顾JDBC
        a. java操作关系型数据的API。导入相关数据库的驱动包后可以通过JDBC提供的接口来操作数据库。
        b. 实现JDBC的六个步骤
            注册数据库驱动
            获取数据库连接
            获取传输器对象
            传输sql执行获取结果集对象
            遍历结果集获取信息
            关闭资源
        c. 数据库连接池(数据源)
    C3P0连接池

2.Spring整合JDBC

      a. 导入相关开发包
            


        b. 将数据源交于Spring管理


            


        c.通过spring获取数据源,获取连接,操作数据库

3.Spring中的JDBC模板类

        使用模板类,能够极大的简化原有JDBC的编程过程,让数据库操作变得简单.
        a. 在Spring中配置JDBC模板类
            


        b. 使用JDBC模板类实现增删改查
          

 1  @Test
 2             public void test02() throws SQLException{
 3                 DataSource source = (DataSource) context.getBean("dataSource");
 4                 Connection conn = source.getConnection();
 5                 PreparedStatement ps = conn.prepareStatement("select * from users");
 6                 ResultSet rs = ps.executeQuery();
 7                 while(rs.next()){
 8                     int id = rs.getInt("id");
 9                     String name = rs.getString("name");
10                     int age = rs.getInt("age");
11                     User user = new User(id,name,age);
12                     System.out.println(user);
13                 }
14             }
15
16             @Test
17             public void test03() throws SQLException{
18                 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
19                 List<Map<String,Object>> list = jdbcTemplate.queryForList("select * from users");
20                 System.out.println(list);
21             }
22             @Test
23             public void test04() throws SQLException{
24                 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
25                 SqlRowSet srs = jdbcTemplate.queryForRowSet("select * from users where id = ?",2);
26                 srs.next();
27                 System.out.println(srs.getString("name"));
28             }
29             @Test
30             public void test05() throws SQLException{
31                 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
32                 int n = jdbcTemplate.update("insert into users values (null,?,?)", "ddd",23);
33                 System.out.println("修改成功,影响到的行数为:"+n);
34             }
35             @Test
36             public void test06() throws SQLException{
37                 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
38                 int n = jdbcTemplate.update("update users set age = ? where id = ?", 33,4);
39                 System.out.println("修改成功,影响到的行数为:"+n);
40             }
41             @Test
42             public void test07() throws SQLException{
43                 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
44                 int n = jdbcTemplate.update("delete from users where id = ?", 4);
45                 System.out.println("修改成功,影响到的行数为:"+n);
46             }


        c. 使用RowMapper封装bean
            RowMapper接口定义了对象到列的映射关系,可以帮助我们在查询时自动封装bean。

 1                 public class UserRowMapper implements RowMapper<User> {
 2
 3                     @Override
 4                     public User mapRow(ResultSet rs, int i) throws SQLException {
 5                         User user = new User();
 6                         user.setId(rs.getInt("id"));
 7                         user.setName(rs.getString("name"));
 8                         user.setAge(rs.getInt("age"));
 9                         return user;
10                     }
11
12                 }
13
14                 /**
15                  * 使用RowMap封装bean
16                  */
17                 @Test
18                 public void test08(){
19                     JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
20                     List<User> list = jdbcTemplate.query("select * from users",new UserRowMapper());
21                     System.out.println(list);
22                 }
23                 /**
24                  * 使用RowMap封装bean
25                  */
26                 @Test
27                 public void test09(){
28                     JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
29                     User user = jdbcTemplate.queryForObject("select * from users where id = ?",new UserRowMapper(),2);
30                     System.out.println(user);
31                 }


        d. 使用BeanPropertyRowMapper自动进行映射
            BeanPropertyRowMapper内部可以使用指定类进行反射(内省)来获知类内部的属性信息,自动映射到表的列。使用它一定要注意,类的属性名要和对应表的列名必须对应的上,否则属性无法自动映射。BeanPropertyRowMapper底层通过反射(内省)来实现,相对于之前自己写的RowMapper效率比较低。

 1             /**
 2              * 通过BeanPropertyRowMapper实现自动封装bean
 3              */
 4             @Test
 5             public void test10(){
 6                 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
 7                 List<User> list = jdbcTemplate.query("select * from users", new BeanPropertyRowMapper(User.class));
 8                 System.out.println(list);
 9             }
10             /**
11              * 通过BeanPropertyRowMapper实现自动封装bean
12              */
13             @Test
14             public void test11(){
15                 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
16                 User user = jdbcTemplate.queryForObject("select * from users where id = ?", new BeanPropertyRowMapper(User.class),2);
17                 System.out.println(user);
18             }

  

原文地址:https://www.cnblogs.com/nanlinghan/p/9931327.html

时间: 2024-10-08 00:26:29

Spring知识点总结(五)Spring整合JDBC的相关文章

spring boot(十五)spring boot+thymeleaf+jpa增删改查示例

快速上手 配置文件 pom包配置 pom包里面添加jpa和thymeleaf的相关包引用 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.

Spring笔记(五): spring 整合jdbc、hibernate、jpa

一.简介 (一)需要的jar包 1.需要的jar包:spring.hibernate.mysql.xml.apache-commons等等的jar包.        2.以上jar包,如spring.xml和commos都是冗余的. (二)分析 1.涉及到的实体.service.dao接口.jdbc配置文件以及service实现类都可以通用,只需要实现不同的dao实现类.配置.测试类. 2.通用的源码如下: 1)实体: <span style="font-size:18px;"&

Spring Boot 整合JDBC 实现后端项目开发

一.前言 前后端分离开发是将项目开发工作前后端交互工作拆分,使前端开发人员能够专注于页面开发或APP 开发,后端开发人员专注与接口开发.业务逻辑开发. 此处开发后端项目,给前端或者APP 端提供接口.不涉及复杂的业务逻辑,通过简单的增删改查来演示后端开发项目. 环境介绍: 开发工具:IDEA JDK: 1.7 及以上 Spring Boot: 2.0 及以上 Maven: 3.0 及以上 二.新建Spring Boot 项目 通过功能菜单File - New - Project 新建Spring

Spring整合jdbc

首先web.xml文件跟往常一样,加载spring容器和加载org.springframework.web.context.ContextLoaderListener读取applicationContext.xml文件初进行始化. 使用spring整合jdbc工具步骤: 1.使用连接池com.mchange.v2.c3p0.ComboPooledDataSource等工具创建数据源. 2.把数据源交给LazyConnectionDataSourceProxy进行管理 3.把LazyConnect

Spring(十三)Spring整合JDBC

做开发不连接数据库怎么行!Spring整合JDBC过程中,数据源可以直接都在beans.xml里配置,也可以把数据单独放在一个properties文件里,方便维护. 首先放入各种jar包,连接MySQL当然要放数据驱动文件. jar包什么的对照项目截图,切面aspect和cglib在这个工程没用到,jar包可以不添加进来 beans.xml,在头文件加上tx事务相关的引用,其他要注意的在文件的注释里基本都点到了 <?xml version="1.0" encoding="

JAVAEE——spring03:spring整合JDBC和aop事务

一.spring整合JDBC 1.spring提供了很多模板整合Dao技术 2.spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术. JDBCTemplate => JDBC模板对象 与DBUtils中的QueryRunner非常相似. //0 准备连接池 ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setDriverClass("com.mysql.jdbc.Dri

Spring学习5-Spring整合JDBC及其事务处理(注解方式)

一.整合的步骤   1.步骤一:首先要获得DataSource连接池(推荐使用B方式): 要对数据库执行任何的JDBC操作,需要有一个Connection.在Spring中,Connection对象是通过DataSource获得的. 有几种方法可以得到DataSource, 其中一种方法是使用Spring提供的轻量级 org.springframework.jdbc.datasource.DriverManagerDataSource,第二种方法是使用 org.apache.commons.db

spring 整合JDBC

使用Spring提供的三个JDBC模板类(JdbcTemplate.NamedParameterJdbcTemplate.SimpleJdbcTemplate)操作数据库 一.JdbcTemplate是Spring中最主要的JDBC模板, 利用JDBC和简单的索引參数查询对数据库进行简单訪问 二.NamedParameterJdbcTemplate可以在查询的时候把值绑定到SQL里的命名參数,而不是索引參数 NamedParameterJdbcTemplate内部包括了一个JdbcTemplat

Spring整合JDBC模板方法设计模式之基于继承的实现

Spring整合JDBC模板方法设计模式之基于继承的实现: 模板设计模式简单描述: 把相同的部分提取出来,当我们运行的时候自动往里面设置值,在JdbcTemplate 的源代码中得execute(). 他把公共的部分拎出来写到一个特别的函数中,当我们使用的时候把会发生变化的内容在特定的部分调用,在不同的类里面处理相同的操作,这种方式就做模板设计模式. 例如,JdbcTemplate类中的方法: // ------------------------------------------------