首页 > 编程知识 正文

springboot常用的注解(springboot默认数据源)

时间:2023-05-03 22:58:51 阅读:76397 作者:805

过去,使用JDBCUtil工具类获取与数据库的连接,但实际上每次运行方法时都创建新连接(常见的方法流程是建立连接、运行sql和释放连接) 的连接不仅频繁创建和断开很麻烦,而且消耗的资源也很大。

连接池可以防止在执行每个方法时创建新连接。 连接池具有多个已建立且不会断开的连接。 如果方法或客户需要数据库连接,则从连接池获取并使用连接,并在完成后调用close方法。 close方法在此处的作用是将连接返回到连接池,而不是关闭连接,以便其他客户使用。

连接池的原理如下。

事先创建类似于JDBCUtil的工具类。 此工具类包含连接池的信息。 这些信息包括有关连接池实例DataSource、连接池大小(最多可以包含多少个连接)以及连接池数据库的信息。 最后,可以从外部调用此方法以获取连接池中的连接。 如果客户需要数据库连接,请向连接池请求

)1)如果连接池具有空闲连接,请将使用分配给客户,并将连接置于“正在使用”状态

)2)如果连接池没有空闲连接,检查连接池的连接数是否超过最大值

如果未超过————(a ),请创建新连接,返回客户使用,并将连接置于“正在使用”状态

超过————(b ) b时,客户进入等待状态,超过等待时间时返回异常信息

用户使用连接后,还可以调用close方法将连接从“正在使用”设置为“空闲”,以便其他客户使用连接池。 如果在使用中mysql数据库突然脱机,则以前的JDBCUtil数据库只连接一次,连接断开不会重新连接。 如果客户在连接池中获取连接,并且连接中断,则选择另一个连接,并尝试重新建立与数据库的连接。

首先编写测试类,然后运行连接池的进程package com.demo.spring.test; importorg.Apache.com mons.dbcp2. basic data source; 导入Java.SQL.connection; 导入Java.SQL.prepared statement; import java.sql.ResultSet; 导入Java.SQL.sqlexception; publicclassdbcptest { publicstaticvoidmain (字符串[ ] args ) throwssqlexception(//连接池basicdatasourcebds=newbasicdatata 其中数字为5,表示连接池中最多有5个连接BDS.setinitialsize(5)。 //连接信息BDS.seturl (JDBC : MySQL ://master 33603306/show1); BDS.setdriverclassname (com.MySQL.JDBC.driver ); BDS.setusername('root ); BDS.setpassword(123456 ); //连接连接连接=BDS.getconnection (); preparedstatementstatement=connection.preparestatement (select * from userinfo ); resultset resultset=statement.execute query (; while(resultset.next ) ) system.out.println ) resultset.getstring('username ' ); //关闭连接与返回连接池connection.close (; }

结果正确,成功获取了userInfo表中的数据

编写连接池的工具类,并使用该工具类更改Dao层的代码package com.demo.spring.util; importorg.Apache.com mons.dbcp2. basic data source; 导入Java.SQL.connection; 导入Java.SQL.sqlexception; publicclassdbcputil { privatestaticbasicdatasourcebds; static { System.out.println ('创建连接池); BDS=new basic数据源(; //配置连接池大小bds.setInitialSize(5); //连接信息BDS.seturl (JDBC : MySQL ://master 33603306/show1); BDS.setdriverclassname (com.MySQL.JDBC.driver ); BDS.setusername('root ); BDS.setpassword(123456 ); }公共静态连接获取() { System.out.println ) (“获取连接”); try { return bds.getConnection (; }catch(sqlexceptione ) { e.printStackTrace ); }返回空值; } package com.demo.spring.MVC.Dao; import com.demo.spring.MVC.bean.user; import com.demo.spring.util.dbcp util; import com.demo.spring.util.JDBC util; 导入Java.SQL.connection; 导入Java.SQL.prepared statement; import java.sql.ResultSet; 导入Java.SQL.sqlexception; 公共类用户{ publicuserlogindao (string username ) { User user=null; try { connection conn=dbcp util.getconn (; string SQL=' select * fromuserinfowhereusername=?' ; preparedstatementps=conn.preparestatement (SQL; PS.setstring(1,username ); ResultSet rs=ps.executeQuery (; if(RS.next () ) { user=new User ); user.setid(id ); user.setusername(RS.getstring ) ) username ); user.setpassword(RS.getstring ) ) password ); } rs.close (; ps.close (; conn.close (; }catch(exceptione ) { e.printStackTrace ); }返回用户; }}剩下的部分代码正如上一篇博客中写的那样,这里只需要使用连接池改造Dao层的代码即可。

博客地址使用SpringBoot笔记本3354MVC和三层体系结构模拟网站的用户注册检查

登录信息检查成功

然后,每次在浏览器地址栏中更改username和password时,都会重新获取连接池中的连接

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。