我做的网站上有需要别人直接下载的东西 怎么做到这一步,如何伪原创 网站,汕头自助建站系统,夏县做网站文章目录 properties文件连接池service层实现类dao层实现类dao层实现类 连接池类: 创建线程池静态常量#xff0c;用于放连接。 创建Properties静态常量#xff0c;用于解析properties文件 静态代码块中#xff0c;解析properties文件#xff0c;将解析结果用于创建连接池 … 文章目录 properties文件连接池service层实现类dao层实现类dao层实现类 连接池类: 创建线程池静态常量用于放连接。 创建Properties静态常量用于解析properties文件 静态代码块中解析properties文件将解析结果用于创建连接池 连接方法:用线程获取连接若没有从连接池中拿一个连接放到线程中去 释放连接方法:将线程变量清除去除事务连接放到连接池中 service层实现类 从连接池中获取一个连接这个连接是在线程中 设置事务(自动提交为false) 获取两个dao两个dao都是操作同一个连接 提交事务 释放连接 dao层减钱、加钱 properties文件
driverClasscom.mysql.cj.jdbc.Driver
urljdbc:mysql://localhost:3306/test?rewriteBatchedStatementstrue
usernameroot
passwordroot
initialSize10
maxActive20
minIdle5
maxWait5000连接池
package com.aistart.tech.utils;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;public class JdbcPoolUtil {private static ThreadLocalConnection threadLocal new ThreadLocal();private static final Properties info new Properties();private static DataSource dataSource null;
// private static Connection connection null;static {try {info.load(JdbcPoolUtil.class.getClassLoader().getResourceAsStream(com/aistart/tech/config/druid.properties));} catch (IOException e) {throw new RuntimeException(e);}//数据库连接池应该也同时被创建try {dataSource DruidDataSourceFactory.createDataSource(info);} catch (Exception e) {throw new RuntimeException(e);}}public static Connection getConnection() throws SQLException {Connection connection threadLocal.get();if (connectionnull){connection dataSource.getConnection();threadLocal.set(connection);}return connection;}public static void freeConnection(){Connection connection threadLocal.get();if (connection!null){try {//把线程变量清除threadLocal.remove();//恢复原来的状态connection.setAutoCommit(true);connection.close();} catch (SQLException e) {throw new RuntimeException(e);}}}}
service层实现类
package com.aistart.tech.servcice.impl;import com.aistart.tech.dao.IAccuntDao;
import com.aistart.tech.dao.impl.AccuntDaoImpl;
import com.aistart.tech.entity.Accunt;
import com.aistart.tech.servcice.AccountService;
import com.aistart.tech.utils.JdbcPoolUtil;import java.sql.Connection;
import java.sql.SQLException;public class AccountServiceImpl implements AccountService {IAccuntDao accuntDao new AccuntDaoImpl();Overridepublic int getBalance(int id) {return 0;}Overridepublic boolean transferMoney(Accunt accunt1, Accunt accunt2,int money) {Connection connection null;try {//从数据库连接池拿出来一个连接connection JdbcPoolUtil.getConnection();connection.setAutoCommit(false);accuntDao.subMoney(accunt1.getId(),money);accuntDao.addMoney(accunt2.getId(),money);connection.commit();System.out.println(service的conn connection.getAutoCommit());} catch (Exception e) {try {connection.rollback();} catch (SQLException ex) {throw new RuntimeException(ex);}throw new RuntimeException(e);}finally {JdbcPoolUtil.freeConnection();}return false;}
}
dao层实现类
package com.aistart.tech.dao.impl;import com.aistart.tech.dao.IAccuntDao;
import com.aistart.tech.utils.JdbcPoolUtil;import java.sql.Connection;
import java.sql.SQLException;public class AccuntDaoImpl implements IAccuntDao {Overridepublic int subMoney(int id, int money) {Connection connection null;if (connection null) {try {connection JdbcPoolUtil.getConnection();System.out.println(这是dao层的connectionconnection.getAutoCommit());} catch (SQLException e) {throw new RuntimeException(e);}}return 0;}Overridepublic int addMoney(int id, int money) {return 0;}
}dao层实现类
package com.aistart.tech.dao.impl;import com.aistart.tech.dao.IAccuntDao;
import com.aistart.tech.utils.JdbcPoolUtil;import java.sql.Connection;
import java.sql.SQLException;public class AccuntDaoImpl implements IAccuntDao {Overridepublic int subMoney(int id, int money) {Connection connection null;if (connection null) {try {connection JdbcPoolUtil.getConnection();System.out.println(这是dao层的connectionconnection.getAutoCommit());} catch (SQLException e) {throw new RuntimeException(e);}}return 0;}Overridepublic int addMoney(int id, int money) {return 0;}
}