【Spring5】010 - JdbcTemplate 概述和准备工作

文章介绍了如何在Spring项目中使用JdbcTemplate进行数据库的增删改查操作,包括配置DruidDataSource数据库连接池,通过Spring配置文件设置数据库信息,以及在Service和Dao层如何使用JdbcTemplate进行数据操作。示例代码展示了添加操作,其余操作类似。
摘要由CSDN通过智能技术生成

项目结构:
在这里插入图片描述

1.什么是 JdbcTemplate

Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库的操作

2.准备工作

  • 引入jar包
    链接:https://pan.baidu.com/s/1xTI59HauzjqahLDqOkQ4-A
    提取码:i3dn
    在这里插入图片描述

  • 在 spring 配置文件配置数据库连接池

    参考资料:该文中的4.1.6.3

    方式一:直接配置数据库信息

        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="url" value="jdbc:mysql://localhost:3306/user_db" />
            <property name="username" value="root" />
            <property name="password" value="root" />
            <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        </bean>
    

    方式二:通过引入外部属性文件配置数据库

    1. 创建properties 格式的外部属性文件,写入数据库信息
      在这里插入图片描述
      prob.driverClass=com.mysql.jdbc.Driver
      prob.url=jdbc:mysql://localhost:3306/user_db
      prob.userName=root
      prob.password=root
      
    2. 把外部 properties 属性文件引入到 spring 配置文件中
      需要先引入context名称空间
      在这里插入图片描述
      在 spring 配置文件使用标签引入外部属性文件
      在这里插入图片描述
      完整配置文件代码:
      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:context="http://www.springframework.org/schema/context"
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                                 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd ">
          <!--开启组件扫描-->
          <context:component-scan base-package="com.rqs"></context:component-scan>
          <!--引入外部属性文件-->
          <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
          <!--配置连接池-->
          <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
              <property name="url" value="${prob.url}" ></property>
              <property name="username" value="${prob.userName}"></property>
              <property name="password" value="${prob.password}"></property>
              <property name="driverClassName" value="${prob.driverClass}"></property>
          </bean>
      </beans>
      
  • 配置 JdbcTemplate 对象,注入 DataSource

    可以看到,在org.springframework.jdbc.core.JdbcTemplate中,存在无参和有参构造器,需要注入DataSource,
    查看源码可知DataSource是通过有参构造器中的set方式进行注入
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                               http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd ">
        <!--开启组件扫描-->
        <context:component-scan base-package="com.rqs"></context:component-scan>
        <!--引入外部属性文件-->
        <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
        <!--配置连接池-->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="url" value="${prob.url}" ></property>
            <property name="username" value="${prob.userName}"></property>
            <property name="password" value="${prob.password}"></property>
            <property name="driverClassName" value="${prob.driverClass}"></property>
        </bean>
        <!--创建JdbcTemplate对象-->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <!--通过有参构造器的set方法注入DataSource-->
            <property name="dataSource" ref="dataSource"></property>
        </bean>
    </beans>
    
  • 创建 service 类,创建 dao 类,在service中注入dao对象,在 dao 注入 jdbcTemplate 对象
    在配置文件中开启组件扫描

    使用注解创建Service和Dao对象

    在这里插入图片描述在这里插入图片描述
    在BookService中注入dao,在 dao 注入 jdbcTemplate 对象
    在这里插入图片描述在这里插入图片描述

    3.增

    1. 对应数据库表创建实体类
      数据库表:
      在这里插入图片描述

    创建entity包用于存放实体类,创建实体类Book

    package com.rqs.spring5.entity;
    
    public class User {
        private String userId;
        private String username;
        private String ustatus;
    
        public String getUserId() {
            return userId;
        }
    
        public void setUserId(String userId) {
            this.userId = userId;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getUstatus() {
            return ustatus;
        }
    
        public void setUstatus(String ustatus) {
            this.ustatus = ustatus;
        }
    }
    
    
    1. 编写service和dao
      在dao中进行数据库的添加操作,具体来说是利用service调用dao中用于添加的方法,然后在dao的Jdbctemplate中调用update方法进行添加操作。
      在这里插入图片描述
      第一个参数:sql语句
      第二个参数:可变参数,设置sql语句值
      以下是具体代码:
      BookDao类:
      package com.rqs.spring5.dao;
      
      import com.rqs.spring5.entity.Book;
      //增
      public interface BookDao {
          void add(Book book);
      }
      
      BookDaoImpl类:
      package com.rqs.spring5.dao;
      
      import com.rqs.spring5.entity.Book;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.jdbc.core.JdbcTemplate;
      import org.springframework.stereotype.Repository;
      
      @Repository
      public class BookDaoImpl implements BookDao{
          @Autowired
          private JdbcTemplate jdbcTemplate;
      
          //增
          @Override
          public void add(Book book) {
              //创建sql语句
              String sql = "insert into t_book values(?,?,?)";
              //调用update方法实现添加功能
              int update = jdbcTemplate.update(sql, book.getUserId(), book.getUsername(), book.getUstatus());
              System.out.println(update);
      
          }
      }
      
      
      BookService类:
      package com.rqs.spring5.service;
      
      import com.rqs.spring5.dao.BookDao;
      import com.rqs.spring5.entity.Book;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Service;
      
      @Service
      public class BookService {
          @Autowired
          private BookDao bookDao;
      
          //增
          public void addBook(Book book) {
              bookDao.add(book);
          }
      }
      
      
    2. 测试添加功能
      package com.rqs.spring5.test;
      
      import com.rqs.spring5.entity.Book;
      import com.rqs.spring5.service.BookService;
      import org.junit.Test;
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      public class TestBook {
          @Test
          public void testJdbcTemplate() {
              ApplicationContext context =
                      new ClassPathXmlApplicationContext("bean6.xml");
              BookService bookService = context.getBean("bookService", BookService.class);
              //实际开发中用界面输入book对象
              Book book = new Book();
              book.setUserId("1");
              book.setUsername("java");
              book.setUstatus("a");
              bookService.addBook(book);
      
          }
      }
      
      在这里插入图片描述
      在这里插入图片描述

4.删

类似于增,可看文末的完整代码

5.改

类似于增,可看文末的完整代码

6.查

查询返回单值

查询表中有多少条记录,返回一个单值
在这里插入图片描述
第一个参数:sql语句
第二个参数:返回类型的Class

查询返回对象

场景:查看图书的详情
在这里插入图片描述
第一个参数:sql语句
第二个参数:RowMapper,是个接口,针对返回不同类型的数据,使用这个接口实现类完成数据的封装
第三个参数:sql语句值
在这里插入图片描述

查询返回集合

场景:查询图书列表分页
在这里插入图片描述
第一个参数:sql语句
第二个参数:RowMapper,是个接口,针对返回不同类型的数据,使用这个接口实现类完成数据的封装
第三个参数:sql语句值

批量添加

操作表中的多条记录
在这里插入图片描述
第一个参数:sql语句
第二个参数:List集合,添加的多条记录数据

批量修改和删除

和批量添加基本类似

项目代码:

主要是看在这里插入图片描述中的代码

链接:https://pan.baidu.com/s/10EhvRXADZ5lwkcztzt8pYA
提取码:7tgr

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值