JDBC连接池Druid操作JDBCTemplate

news/2024/5/18 22:59:14 标签: mysql, jdbc

JDBC连接池Druid操作&JDBCTemplate

  • 首先哈,要使用Druid连接池以及JDBCTemplate,那么肯定是先要导入包的
  • 先来看看是哪一些包吧
    在这里插入图片描述
  • 咳咳,就是这些啦,是不是不知道哪里有这些包?
  • 那么就上maven官网下载吧,里面有jar,也有依赖,这里我直接把所需依赖放下面吧!!
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.9</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>5.0.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.0.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.0.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>5.0.0.RELEASE</version>
</dependency>
  • 咳咳,到这里哈,我们的导包工作就完成了哈
  • 然后,我们还需要配置一个properties文件,用于连接操作
  • 比如我要连接mysql里面bd1数据库,我就要进行一些配置哈
  • 建立一个名称为druid.properties文件,记得一定要放在src目录下哈
  • (补充:如果是maven项目,记得放在resource资源文件里面哈)
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/db1?characterEncoding=utf-8&serverTimezone=UTC
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000
filters=stat
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=false
maxPoolPreparedStatementPerConnectionSize=200
  • 好哒,到这里,我们的准备工作就完成的差不多了,现在就可以开始写代码啦
  • 等等,我们还需要设置一个工具类,方便我们调用,就不用连一次我们就要写一次了
  • 那好哒,我们在java包下面创建一个util包,然后在里面创建又给 JDBCUtils,然后把下面的内容放进去吧,都给你写好啦
package util;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/**
 * JDBC工具类,使用的是Durid连接池
 */
public class JDBCUtils {

    private static DataSource ds;

    static {
        try {
            // 加载配置文件
            Properties pro = new Properties();
            // 使用classLoader加载配置文件,获取字节输入流
            pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
            // 初始化连接池对象
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // 获取连接池对象
    public static DataSource getDataSource() {
        return ds;
    }
    // 获取连接Connection对象
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
}

  • 终于终于,我们就以及完成了准备工作,那么现在来利用template模板来进行操作数据库吧!
  • 我们最好搞一个测试类哈,里面将template定义出来,然后进行操作就好啦
package test;

import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;

/**
 * jedis客户端的测试类
 */
public class JedisTest {
    private  JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    // 数据库连接池测试
    @Test
    public void test(){
        String sql = "select * from province";
        List<T> list = template.query(sql, new BeanPropertyRowMapper<T>(T.class));
        System.out.println(list);
    }
}T

  • T表示泛型哈,你数据库里面表的实体类,就放在T的位置就可以啦。
  • 然后讲一下这个template的几个方法哈,

首先就是这个query方法,直接将你查询所有打包成为list给你返回过来,还是很爽的哈
例子:List<T> list = template.query(sql, new BeanPropertyRowMapper<T>(T.class));

然后我们来看看第二个方法
queryForObject方法,它是将获取到的值,当作一个Object返回回来,当然这个你要直接写类型哈
例子: user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class));
这样,他就将User的一个对象返回回来了,记住哦,这个只能是一个,用于主键查询,多个就会报错的哦,像这种单点查询最后把异常处理也加进来,这样才会有返回值,像这样:
try {
    String sql = "select * from user where username = ? and password = ?";
    //System.out.println(username + " --- " + password);
    User user = null;
    user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username, password);
    return user;
} catch (DataAccessException e) {
    e.printStackTrace();
    return null;
}


然后我们看看修改方法update,这玩意没好说的,直接用就完了
比如我要在User对象里面插入一条数据,直接用就完了
例子:  	String sql = "insert into user values(null,?,?,?,?,?,?,null,null)";
            template.update(sql,user.getName(),user.getGender(), user.getAge(),
                    		user.getAddress(),user.getQq(),user.getEmail());
再比如我要直接删除一条数据
        String sql = "delete from user where id = ?";
        template.update(sql,id);

queryForObject返回值就直接定义的,第一个参数是mysql语句,第二参数就是直接写的返回值类型,这个要注意一下哈,
比如我要返回一个整型,直接导入它的class就完事了
return template.queryForObject(sql语句,Integer.class);

  • 咳咳,做到这里,基本上JDBC连接池Druid操作&JDBCTemplate就稳稳的了
  • 告辞告辞。

http://www.niftyadmin.cn/n/1329247.html

相关文章

MyBatis数据封装

MyBatis数据封装 xml语法挺多的&#xff0c;如果用的不勤快的话&#xff0c;可能过一会就全忘记了&#xff0c;还是注解方便呀&#xff0c;记得快&#xff0c;用的快&#xff0c;但是xml还是要好好学的哦 当我们需要实现动态sql语句实现的时候&#xff0c;我们就需要使用到其他…

MyBatis数据封装(注解开发)

MyBatis数据封装&#xff08;注解开发&#xff09; 学完xml以后呢&#xff0c;老师无情的来了一句&#xff0c;xml用的不大多了哦&#xff0c;大家现在更喜欢用注解开发拉&#xff0c;嘿嘿&#xff0c;我真**了&#xff0c;xml打吐了都快。 不过注解我也更喜欢注解拉&#xff0…

前端框架Vue学习

前端框架Vue Vue框架是一套用于构建用户界面的渐进式框架。 采用的是MVVM模式&#xff0c;即&#xff1a;通过视图与模型的双向绑定&#xff0c;简化前端操作。 渐进式&#xff1a;指的是可以选择性的使用该框架的一个或多个组件&#xff0c;不对你的使用进行要求。 那么前端框…

Spring Boot 框架学习

Spring Boot 快速入门 Spring Boot是一个便捷搭建 基于spring工程的脚手架&#xff1b;作用是帮助开发人员快速搭建大型的spring 项目。简化工程的配置&#xff0c;依赖管理&#xff1b;实现开发人员把时间都集中在业务开发上。 简单入门 实现步骤&#xff1a; 创建工程&…

求三角形子集的个数

求三角形子集的个数 已知有n个值&#xff0c;求他们能组成多少个三角形 给定n条边&#xff0c;求能组成三角形的子集个数&#xff0c;首先将给定数组排序&#xff0c;定义三个指针。分别枚举三角形的三条边&#xff0c;若前两个指针能保证指向的元素大于第三个指针指向的元素。…

利用Kaptcha生成验证码

Kaptcha生成验证码 原来搞验证码的时候&#xff0c;都是用java画笔去搞&#xff0c;感觉好麻烦的有木有&#xff0c;今天带大家来看看kaptcha这个小工具吧&#xff0c;他可方便多啦&#xff01;&#xff01;&#xff01; 第一步哈&#xff0c;先导包&#xff0c;没有包啥也干不…

Interceptor拦截器学习

Interceptor拦截器 咳咳&#xff0c;这个东东还是蛮好的哦&#xff0c;在项目里面哈&#xff0c;有很多的子模块需要做相同的请求处理&#xff0c;如果每个子模块都去写的话&#xff0c;那就太麻烦了&#xff0c;而且修改维护起来也不方便&#xff0c;耦合性也高&#xff0c;所…

利用MultipartFile进行文件上传

MultipartFile文件上传 今天我们搞一个换头像的设置哈&#xff0c;就是先上传一个图片文件上去&#xff0c;然后对将user对象里面的头像路径修改为上传的图片哈&#xff01;&#xff01;&#xff01; 首先第一步&#xff0c;要进行配置&#xff0c;就是这些图片要存放在哪里你得…