Druid数据池使用

1、数据库连接池(Connection pooling)

为啥使用Druid,简单看一下数据池干嘛得,例如我们日常使用DriverManager(驱动管理)获取得Connection连接对象,经常忘记关闭连接。而且我们使用一次需要取创建一个新得连接对象造成资源浪费。

这时候一个容器,数据库连接池,就可以来帮我们解决掉上面得问题.。

        1)连接池优点            

      * 资源重用:在系统初始化时候就创建连接对象,用户使用时候是从池中取不是新连接,且用完继续放回池中
      * 避免数据库连接遗漏:如避免我们忘记close连接对象而造成得浪费

2、数据库连接池标准接口(DataSource)

这是官方sun公司提供得接口,由第三方公司实现它

       1 )常见得数据库连接池

               * DBCP

               *c3p0

               *Druid

Druid介绍 · ApacheDruid中文技术文档 (apache-druid.cn)

 Druid不仅仅是一个数据库连接池,它包括四个部分:

 Druid是一个JDBC组件,它包括三个部分:

 基于Filter-Chain模式的插件体系。

 DruidDataSource 高效可管理的数据库连接池。

 SQLParse

3、java代码实现Druid

        1)导入jar包

jar包使用方法可见java代码实现,利用JDBC接口-连接Mysql数据库_fengdidiao的博客-CSDN博客

        2)配置配置文件(.properties文件)

#就是一套Driver获取连接流程
#  1、得到驱动器\8.x.xx使用cj-jdbc
driverClassName=com.mysql.cj.jdbc.Driver
#  2、为Connection传参
#  useServerPrepStmts=ture(开启防止sql注入-预编译功能)
#  allowPublicKeyRetrieval=true 解决这个不允许公共密钥检索(Public Key Retrieval is not allowed)问题。
url=jdbc:mysql:///feng?useSSL=false&useServerPreStmts=ture
username=root
password=123456
#  3、初始化连接数量
initialSize=5
#  4、最大连接数
maxActive=10
#  5、最大等待时间:
#  获取连接时最大等待时间,单位毫秒,
#  超过连接就会失效。
#  配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,
#  如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
maxWait=3000
#用来检测连接是否有效的sql,要求是一个查询语句。
#validationQuery=SELECT 1

        3)获取配置文件

                ---大白话使用属性对象(Properties)加载一个文件。加载文件使用流方法,FileInoutStream()方法,传入字符串类型资源文件地址。

                ---加载(load)资源文件即可

                ---如果不知道自己得资源文件路径,下翻 5)有方法说明。

Properties properties = new Properties();
//Properties类是java.util包下得一个类,目的就是读取Java的properties配置文件

properties.load(new FileInputStream("src/com/feng/jdbc/druid/druid.properties"));
//load加载命令,FileInoutStream()是IO流一个读方法。读取系统文件

        4)得到连接池&使用连接池获取连接对象

DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
//将配置文件信息传入
//使用德鲁伊工厂获取一个数据池--类型是sun公司提供得接口标准,数据池都得使用

Connection connection = dataSource.getConnection();
    //使用数据池获取连接对象---这个连接对象就可以管理事务commit--和获取执行sql对象Createstatement、prepareStatement

        5)可能遇到错误如下

                ---系统文件寻找异常:在这就是找不到资源文件

                ---原因:3)步骤加载资源文件,流读取时候,位置信息错误

               --解决办法:使用System得getProPerty(),传入"user.dir",打印当前模块路径

                 -打印结果如下

                 -找到路径将此路径下完全路径导入,找到①文件、从②开始将路径复制使用即可

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果要使用 Drui 数据连接,可以通过以下步骤进行整合: 1. 需要在 pom.xml 文件中添加 druid-spring-boot-starter 依赖,可以使用以下代码: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.6</version> </dependency> ``` 2. 在 application.properties 文件中配置 Druid 数据连接信息,可以使用以下代码: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.druid.initial-size=5 spring.datasource.druid.max-active=20 spring.datasource.druid.min-idle=5 spring.datasource.druid.max-wait=60000 spring.datasource.druid.filters=stat,wall,log4j spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 ``` 3. 在 Spring Boot 应用程序中使用 JdbcTemplate 或者 Mybatis 等 ORM 框架进行数据库操作。 如果使用 JdbcTemplate 进行数据库操作,可以通过以下代码示例进行操作: ```java @Autowired private JdbcTemplate jdbcTemplate; public void insert(String name, Integer age) { jdbcTemplate.update("INSERT INTO user(name, age) VALUES (?, ?)", name, age); } public List<User> findAll() { return jdbcTemplate.query("SELECT * FROM user", new BeanPropertyRowMapper<>(User.class)); } ``` 如果使用 Mybatis 进行数据库操作,可以通过以下代码示例进行操作: ```java @Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User findById(@Param("id") Long id); @Insert("INSERT INTO user(name, age) VALUES (#{name}, #{age})") int insert(User user); @Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}") int update(User user); @Delete("DELETE FROM user WHERE id = #{id}") int deleteById(@Param("id") Long id); } ``` 需要注意的是,在 Mybatis 中,除了配置 Druid 数据连接信息之外,还需要在 application.properties 文件中配置 Mybatis 相关的信息,例如: ```properties mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.example.demo.model ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值