Spring5之JdbcTemplate基本使用详解

一、JdbcTemplate概述

JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。
在这里插入图片描述

二、JdbcTemplate开发步骤

(1)引入jar

jdbc的jar
spring-tx
mysql的驱动包选择5.1.6.
druid连接池的包。
还有其他基本包。

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>

配置jdbc.properties:()和mysql5.1.6搭配使用

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF8
jdbc.username=root
jdbc.password=root

在这里插入图片描述

(2)spring配置文件的编写,配置数据库连接池,配置jdbcTemplate对象,注入DataSource:

db.properties:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF8
jdbc.username=root
jdbc.password=root

spring配置文件:在容器中生产各种对象bean,然后等待被注入使用

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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">
    <!--1.加载properties配置文件-->

    <context:component-scan base-package="com.fan"></context:component-scan>
    <context:property-placeholder location="classpath:db8.properties" ></context:property-placeholder>
    <!--2.设置数据源druid-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>
    <!--3.将数据源配到jdbcTemplate中-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!--设置属性-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>

</beans>

Spring产生JdbcTemplate对象

我们可以将JdbcTemplate的创建权交给Spring,将数据源DataSource的创建权也交给Spring,在Spring容器内部将数据源DataSource注入到JdbcTemplate模版对象中,配置如下:
在这里插入图片描述

(3)创建service实现类,创建dao类,在dao类注入jdbcTemplate对象。

数据库:
在这里插入图片描述

实体类User(对应数据库的一张表t_user):

package com.fan.domain;

import org.springframework.stereotype.Component;

import java.util.Date;

@Component//实体类
public class User {

    private Integer id;
    private String userName;
    private Integer age;
    private String addr;
    private Date birthday;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", age=" + age +
                ", addr='" + addr + '\'' +
                ", birthday=" + birthday +
                '}';
    }
}

dao的实现类:

package com.fan.dao.impl;

import com.fan.dao.UserDao;
import com.fan.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository("userDao")
public class UserDaoImpl implements UserDao {

    @Autowired//类型注入
    private JdbcTemplate jdbcTemplate;

    //增加
    public void addUser(User user) {
        String sql = "insert into t_user (username) values (?);";
        int update = jdbcTemplate.update(sql, user.getUserName());
        System.out.println(update);
    }
    //修改
    public void updateUser(User user){
        String sql = "UPDATE t_user set username=?,age=? where id=?";
        int update = jdbcTemplate.update(sql, user.getUserName(), user.getAge(), user.getId());
        System.out.println(update);
    }

    //删除
    public void delUser(Integer id) {
        String sql ="delete from t_user where id=?";
        int update = jdbcTemplate.update(sql, id);
        System.out.println(update);
    }
}

userService的实现类:

package com.fan.service.impl;

import com.fan.dao.UserDao;
import com.fan.domain.User;
import com.fan.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service("userService")
public class UserServiceImpl implements UserService {

    @Autowired//类型注入
    private UserDao userDao;

    public void addUser(User user) {
        userDao.addUser(user);
    }

    public void updateUser(User user) {
        userDao.updateUser(user);
    }

    public void delUser(Integer id) {
        userDao.delUser(id);
    }
}

在这里插入图片描述
测试类:

import com.fan.dao.UserDao;
import com.fan.dao.impl.UserDaoImpl;
import com.fan.domain.User;
import com.fan.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;
import javax.sql.DataSource;
import java.sql.SQLException;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml")//注解形式加载xml文件
@Component
public class TestJdbc {

    @Resource//注入service对象
    private UserService userService;


    //测试数据源连接
    @Resource(name = "dataSource")
    private DataSource dataSource;

    @Test//1.测试数据库的连接
    public void getConnection2() throws SQLException {
        System.out.println(dataSource);
        System.out.println(dataSource.getConnection());
    }

    @Test//测试增加
    public void test01(){
        //手动形式加载xml文件
        /*ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        UserDao userDao = context.getBean("userDao", UserDao.class);*/
        System.out.println(userService);
        User user = new User();
        user.setUserName("李四测试5");
        userService.addUser(user);

    }

    @Test//测试修改
    public void test02(){
        User user = new User();
        user.setUserName("李四测试888");
        user.setId(1);
        user.setAge(88);
        userService.updateUser(user);

    }

    @Test//测试删除
    public void test03(){
        userService.delUser(6);
    }


}

三、JdbcTemplate的常用操作

(4.1)添加修改删除都是使用update方法:
代码:

(4.2)查询记录数:
在这里插入图片描述

在这里插入图片描述

查询单个对象:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

查询返回对象集合:

在这里插入图片描述

在这里插入图片描述

批量添加:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

批量修改:类似于批量增加

在这里插入图片描述

批量删除:
在这里插入图片描述

在这里插入图片描述

https://www.boxuegu.com/news/2912.html

猜你喜欢

转载自blog.csdn.net/weixin_38568503/article/details/114762412