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

时间: 11-08

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

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知识点整理

六大模块 核心容器模块 spring中最核心的模块.负责Bean的创建,配置和管理.主要包括:beans,core,context,expression等模块. Spring的AOP模块 主要负责对面向切面编程的支持,帮助应用对象解耦. 数据访问和集成模块 包括JDBC,ORM,OXM,JMS和事务处理模块,其细节如下: JDBC模块提供了不再需要冗长的JDBC编码相关了JDBC的抽象层. ORM模块提供的集成层.流行的对象关系映射API,包括JPA,JDO,Hibernate和iBatis.

转:spring与mybatis三种整合方法

哎,csdn没转载功能,只能复制了.. 本文主要介绍Spring与Mybatis三种常用整合方法,需要的整合架包是mybatis-spring.jar,可通过链接http://code.google.com/p/mybatis/下载到. 1.采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数.  (1)Spring配置文件: <!-- 引入jdbc配置文件 -->     <context:property

Spring知识点回顾(01)

Spring知识点回顾(01) 一.依赖注入 1.声明Bean的注解 @Component @Service @Repository @Controller 2.注入Bean的注解 @Autowired @Inject @Resource 二.加载Bean 1.xml方式 - applicationcontext.xml : Beans, Bean, Component-Scan 2.注解方式 - @Configuration,@ComponentScan,@Bean 用@Configurati

Java之Spring知识点

1.AOP的概念是Aspected Oriented Programming 面向方面编程. 好处:AOP将程序分解成各个方面或者说关注点.这使得可以模块化,相当横向上分切了.它可以解决OOP和过程化方法不能够很好解决的横切(crosscut)问题,如:事务.安全.日志等横切关注 实现AOP有几种方式: 1. Spring 1.2版本中通过ProxyFactoryBean来实现aop,即通过动态代理来实现的,Aspect必须继承MethodBeforeAdvice,MethodAfterAdvi

Spring学习笔记五

Bean的生命周期 原文:http://997004049-qq-com.iteye.com/blog/1729793 任何一个事物都有自己的生命周期,生命的开始.生命中.生命结束.大家最熟悉的应该是servlet 的生命周期吧.和 servlet 一样 spring bean 也有自己的生命周期.本文讲述 spring bean 的生命周期,这个对理解 spring 框架有非常好的作用. 大家应该知道spring 中有几种供 springbean 生存的容器: BeanFactory . Ap