oracle/mysql连接德鲁伊数据库连接池和使用dbutils第三方jar包简化dao层实现增删改查
程序员文章站
2022-06-24 19:08:22
导入commons-dbutils-1.3.jar包OracleDao层所有dao实现类均继承此抽象BaseDao/** * @Author Li Weitong * @Date 2020/11/22 10:43 */public abstract class BaseDao { private QueryRunner queryRunner = new QueryRunner(); /** * 执行insert/update/delete语句 * 在商品...
导入commons-dbutils-1.3.jar包
Oracle
Dao层所有dao实现类均继承此抽象BaseDao
/**
* @Author Li Weitong
* @Date 2020/11/22 10:43
*/
public abstract class BaseDao {
private QueryRunner queryRunner = new QueryRunner();
/**
* 执行insert/update/delete语句
* 在商品管理新系统,担当增删改商品信息
* 在学生管理系统中,担当增加学生信息,修改学生信息,删除学生信息
* @param sql sql语句
* @param args sql语句中对应的参数
* @return 返回-1执行失败,返回其他表示影响的行数
*/
public int update(String sql,Object ... args){
Connection connection = JdbcUtils.getConnection();
try {
return queryRunner.update(connection,sql,args);
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.close(connection);
}
return -1;
}
/**
* 查询一个泛型为bean的一条javaBean的sql语句
* 在学生管理系统中,担当查询一名学生的所有信息
* 在商品管理系统中,担当点击修改一条商品按钮或超链接后,现在修改界面回显当前一条商品的默认信息,再在此基础上进行后续修改
* @param type 返回对象类型
* @param sql 执行sql语句
* @param args sql对应的参数值
* @param <T> 返回的类型的泛型
* @return 返回一整条记录
*/
public <T> T queryForOne(Class<T> type,String sql,Object ... args){
Connection connection = JdbcUtils.getConnection();
try {
return queryRunner.query(connection,sql,new BeanHandler<T>(type),args);
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.close(connection);
}
return null;
}
/**
* 查询多条Javabean记录sql语句
* 在学生管理系统中,担当列出整个学生列表
* 在商品管理系统中,担当分页列出商品列表信息。
* @param type 返回对象类型
* @param sql sql语句
* @param args sql对应的参数
* @param <T> 返回类型的泛型
* @return 返回多条记录
*/
public <T> List<T> queryForList(Class<T> type,String sql,Object ... args){
Connection connection = JdbcUtils.getConnection();
try {
return queryRunner.query(connection,sql,new BeanListHandler<T>(type),args);
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.close(connection);
}
return null;
}
/**
* 返回一行一列的sql语句
* 在学生管理系统中,担当 查询一个学生的某个字段属性
* 在商品管理系统中,担当 分页查询总记录数pageTotalCount(count(*)这一行一列数据)
* @param sql 执行的sql语句
* @param args sql对应的参数值
* @return 返回一个属性字段值
*/
public Object queryForSingleValue(String sql,Object ... args){
Connection connection = JdbcUtils.getConnection();
try {
return queryRunner.query(connection,sql,new ScalarHandler(),args);
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.close(connection);
}
return null;
}
}
JdbcUtils类,如下
/**
* 封装连接、关闭数据库工具类
* @Author Li Weitong
* @Date 2020/11/22 09:26
*/
public class JdbcUtils {
private static DruidDataSource druidDataSource;
static { //通过静态代码块在类创建前被调用,优雅代码
// 通过类加载器以二进制IO流的形式读取配置文件信息 并加载配置文件
try {
InputStream resourceAsStream = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties properties = new Properties();
properties.load(resourceAsStream);
// 通过德鲁伊数据库工厂创建数据库连接池
druidDataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection connection = null;
try {
connection = druidDataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
public static void close(Connection connection){
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
Oracle的jdbc.properties 注意:固定在src此目录下
如下:
username=scott
password=123456
url=jdbc:oracle:thin:@192.168.58.129:1521:helowin
driverClassName=oracle.jdbc.driver.OracleDriver
#谨记,当前学习所用ojdbc6已经过时,今后我的项目若用到ojdbc9/ojdbc12,需要把driver删除。
initialSize=5
maxActive=10
测试是否可以连接德鲁伊数据库连接池,如下:
/**
* 测试通过德鲁伊连接池连接oracle数据库
* 测试成功
*/
public class JdbcUtilTest {
@Test
public void test(){
Connection connection = JdbcUtils.getConnection();
System.out.println(connection);
JdbcUtils.close(connection);
}
}
mysql
待续
Mysql的jdbc.properties 注意:固定在src此目录下
username=root
password=123456
# 3306/数据库名
url=jdbc:mysql://192.168.58.129:3306/cabbeenMall
driverClassName=com.mysql.cj.jdbc.Driver
initialSize=5
maxActive=10
本文地址:https://blog.csdn.net/m0_47119598/article/details/109923630