【Spring】:JdbcTemplate

1、什么是 JdbcTemplate

  1. Spring JdbcTemplate也叫 Spring JDBC模块,主要负责数据库资源管理和错误处理,简化对数据库的操作。

  2. Spring JdbcTemplate是 Spring 框架中提供的一个对象,是对原始繁琐的 JDBC API 对象的简单封装。Spring 框架为我们提供了很多的操作模板类。例如: 操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。

  3. JdbcTemplate并不是唯一进行数据库访问的方法,还有NamedParameterJdbcTemplateSimpleJdbcInsertSimpleJdbcCallRDBMS 对象(包括MappingSqlQuery,SqlUpdate和StoredProcedure)。而JdbcTemplate是经典且最受欢迎的 Spring JDBC 方法。

  4. Spring 的 JDBC 模块由四个不同的包组成:

    包名说明
    core包含 JDBC 的核心包,包括JdbcTemplate类、NamedParameterJdbcTemplate类SimpleJdbcInsert类和SimpleJdbcCall
    datasource访问数据源的使用工具类,它有多种数据源的实现,可以在 JavaEE 容器外部测试 JDBC 代码
    object以面向对象的方式访问数据库,它允许执行查询并将返回结果作为业务对象,可以在数据表的列和业务对象的属性直接映射查询结果。
    support包含了 core 和object 包的支持类

2、使用JdbcTemplate

JdbcTemplate的开发步骤需:

  1. 导入 spring-jdbc 和 spring-tx 的包:

    <!--导入spring的jdbc坐标-->
    <dependency>  
       <groupId>org.springframework</groupId>  
       <artifactId>spring-jdbc</artifactId>
       <version>5.0.5.RELEASE</version>
    </dependency>
    <!--导入spring的tx坐标-->
    <dependency>  
        <groupId>org.springframework</groupId> 
        <artifactId>spring-tx</artifactId> 
        <version>5.0.5.RELEASE</version>
    </dependency>
    
  2. 创建数据库表和实体

  3. 创建JdbcTemplate对象:创建 JdbcTemplate 对象的方式有两种,一种是直接创建,一种通过 IOC 创建。

    //1.配置数据源
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://localhost:3306/spring");
    dataSource.setUsername("root");
    dataSource.setPassword("root");
    //创建JdbcTemplate对象
    JdbcTemplate jdbcTemplate = new JdbcTemplate();
    // 3、设置数据源给  JdbcTemplate
    jdbcTemplate.setDataSource(dataSource);
    

    这种是通过实例化 JdbcTemplate 对象,给对象配置数据源,然后再通过对象执行数据库操作。而下面是将数据源和 JdbcTemplate 对象创建权交给了 IOC 容器,通过配置 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/spring"/>
         <property name="username" value="root"/>
         <property name="password" value="root"/>
    </bean>
      <!--配置 JdbcTemplate 对象-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
         <property name="dataSource" ref="dataSource"/>
    </bean>
    

    上述代码是通过 XML 的方式配置,具体的调用使用如下:

    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContent.xml");
    //创建JdbcTemplate对象,在创建过程已经将 数据源 配置给了对象
    JdbcTemplate jdbcTemplate = applicationContext.getBean("jdbcTemplate",JdbcTemplate.class);  
    
  4. 执行数据库操作:在完成 对象的创建之后,我们就需要使用 对象进行 CRUD 操作,具体内容如下。

3、具体的数据库操作

  1. 使用 JdbcTemplate 增删改(INSERT,UPDATE 和 DELETE):通过 JdbcTemplate 对象中的一系列updata()方法完成,常用方法如下:
    方法说明
    int update(String sql)该方法比较简单,直接执行传入的 sql 语句,并返回搜影响的行数
    int update(String sql,PreparedStatementSetter pss)该方法通过 PreparedStatementSetter 设置 sql 语句中的参数,并返回受影响的行
    int update(PreparedStatementSetter pss)该方法执行 PreparedStatementSetter ,并返回受影响的行
    int update(String sql,Object… args)该方法使用 Object… 设置 sql 语句中的参数,且参数不是为 NULL ,并返回受影响的行
    //接上面的 JdbcTemplate 对象创建
    int num1 =jdbcTemplate.update("insert into user (name,age) values (?,?)", "zhangsan", 18);
    int num2 =jdbcTemplate.update("update into user  set age=? where name=?", "zhangsan", 18);
    int num3 =jdbcTemplate.update("delete from user where name=?","zhangsan");
    
  2. 使用 JdbcTemplate 查询:通过 JdbcTemplate 对象中的一系列query()方法完成,因为该方法过多,我们对比较常用的记忆就行:
    //查询全部
    List<User> userList = jdbcTemplate.query("select * from user", new BeanPropertyRowMapper<User>(User.class));
    //根据条件查询
    List<User> userList1 = jdbcTemplate.query("select * from user where age=? ", new BeanPropertyRowMapper<User>(User.class), "18");
    //查询一条数据
    User user = jdbcTemplate.queryForObject("select * from user where age=? ", new BeanPropertyRowMapper<User>(User.class), "18");
    //查询一行任何类型的数据,最后一个参数指定返回结果类型
    Integer num = jdbcTemplate.queryForObject("select count(*) from user", Integer.class);
    //查询一行数据并将该行数据转换为Map返回
    Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap("select * from user", new BeanPropertyRowMapper<User>(User.class));
    

只对 JdbcTemplate 进行简单的了解,在进行数据访问时一般不会使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值