properties 配置文件
将数据库的驱动 url 用户名 密码都存储在配置文件中
建议放在src下面
//使用类的加载器
InputStream is= PropertiesDemo.class.getClassLoader().getResourceAsStream("database.properties");
Properties pro=new Properties();
pro.load(is);
System.out.println(pro);
//获取集合中的键值对
String driverClass = pro.getProperty("driverClass");
String url = pro.getProperty("url");
String username = pro.getProperty("username");
String password = pro.getProperty("password");
Class.forName(driverClass);
Connection con = DriverManager.getConnection(url, username, password);
DbUtils:
QueryRunner 提供对sql语句操作的api(增删改查)
query 查
deprecated表示 已过时
update 增删改
int update(Connection conn, String sql, Object... params)
params 可以给占位符'?'赋值
例如:
String sql = "update sort set sname=?,sprice=?,sdesc=? where sid=?";
// 将三个为好占位符的事迹参数写在一个数组中
Object[] param = { "生活用品", 432.23, "购买xx用品" ,7};
int row = qr.update(con, sql, param);
ResultSetHandler接口,用于定义select操作后怎么封装结果集
ArrayHandler() 将第一条记录封装到Object[]数组(没有数据该数组长度为0),数组里面的就是每一个字段的值
ArrayListHandler() 将每一条记录封装到Object[]数组,将数组封装到List集合中
BeanHandler 将结果集中第一条记录封装到指定的JavaBean中
BeanHandler();括号里面放一个类的class对象
ResultSetHandler rsh = new BeanHandler<Sort>(Sort.class);
Sort sort= qr.query(con, sql, rsh);
如果没有结果集Sort就为null
BeanListHandler 将结果集中每一条记录封装到指定的JavaBean中,将这些JavaBean封装到list集合
ColumnListHandler 将结果集中指定的列的字段值 封装到list集合
ColumnListHandler()括号里面放列名
ScalarHandler 用于单数据(聚合函数 sum count 等)的操作
MapHandlder
键是一个列名 值是这一列的数据
MapListHandlder
键是一个列名 值是这一列中的数据,然后把map集合存储到list集合中
DBUtils 定义了关闭资源与事物处理的方法
事物处理案例,转账
执行成功,提交事务 conmmit
执行失败,回滚事务 rollback
由于频繁的创建,关闭Connection,现在用一个池来管理Connection,用的时候从池里面拿,用完了就归还
javax.sql里面有一个DataSource接口
常见的连接池DBCP C3P0
DBCP(Tomcat(javaweb服务器,把写好的class文件放在Tomcat软件中,作用是会监听端口80)内置连接池)
导入jar包后有一个BasicDataSource实现了javax.sql.DataSource
BasicDataSource的使用步骤:
设置必须项:
//创建DataSource接口的实现类
//实现类在 org.apache.commons.apachp
BasicDataSource dataSource=new BasicDataSource();
1.dataSource.setDriverClassName("com.mysql.jdbc.Driver");
2.dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
3.dataSource.setUsername("root");
4.dataSource.setPassword("root");
new QueryRunner(JDBCUtils.getDataSource)
设置基本项(如果不自定义 系统会默认分配):
maxActive 最大连接数
minidle 最小空闲连接数
maxidle 最大空闲连接数
initialSize 初始化连接数
|
|