1.Druid连接池
连接池:
概述:在池中预先放入多个连接对象,当用户使用连接对象,从池子中取出;用完了回收到池子中
好处:减少创建和销毁连接对象的数目,提高了性能
原理:(
复用机制
)
在集合中放入10个连接对象
如果有用户使用连接对象,则从集合中获取,并删除集合中的对象
如果执行完毕,调用close,回收资源(将连接对象,重新添加到集合,给另一个用户复用)
Druid连接池: 是阿里巴巴提供的,公认的性能最好的一款连接池产品;其它-c3p0,dbcp使用步骤:
- 导入Druid连接池的jar包
- 编写Druid的配置文件db.properties;(注意:key固定,值可变更)
- 加载配置文件,获取数据源,从而得到连接对象
- close已经变为了回收(连接池里面有重写)
---------------db.properties配置---------------
#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb1
username=root
password=123
#<!-- 初始化连接 -->
initialSize=10
#最大连接数量
maxActive=50
#<!-- 最小空闲连接 -->
minIdle=5
#<!-- 超时等待时间以毫秒为单位 60000毫秒/1000等于60秒 -->
maxWait=5000
------------DBUtils连接池工具类-------------
public class DBUtils {
private static DataSource dataSource;
private static Properties p = new Properties();
//静态代码块:只加载一次
static{
//反射对象调用getResourceAsStream
//从src目录下获取到db.properties的资源
try {
InputStream is = DBUtils.class.getResourceAsStream("/db.properties");
p.load(is); //加载连接池配置
//根据传入的配置,获取数据源,数据源中包含了连接池的操作
dataSource = DruidDataSourceFactory.createDataSource(p);
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getDataSource(){
return dataSource; //获取数据源
}
public static Connection getConnection(){
Connection conn = null;
try { //从连接池中获取连接对象
conn = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
2.DaoUtils的第三方jar
DaoUtils第三方jar包引入
内部实现:和我们自己写的DaoUtils是类似的,提供了,我们就不用自己写了
第三方的jar做了除级别crud之外的其他sql语句的封装;例如:聚合,连接查询
步骤:
- 导入dbutils的jar包(DaoUtils的实现)
- 通过QueryRunner调用update和query方法实现增删改查
public class PersonDaoImpl {
//使用QueryRunner实现增删改查功能
private QueryRunner queryRunner = new QueryRunner(DBUtils.getDataSource());
public int insert(Person p) {
String sql = "insert into person(name,age,bornDate,email,address) values(?,?,?,?,?)";
try {
return queryRunner.update(sql,p.getName(),p.getAge(),p.getBornDate(),p.getEmail(),p.getAddress());
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
public int update(Person p) {
String sql = "update person set name=?,age=? where id=?";
try {
return queryRunner.update(sql,p.getName(),p.getAge(),p.getId());
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
public int delete(int id) {
String sql = "delete from person where id=?";
try {
return queryRunner.update(sql,id);
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
public Person selectById(int id) {
String sql = "select * from person where id=?";
try {
return queryRunner.query(sql, new BeanHandler<>(Person.class), id);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public List<Person> selectAll() {
String sql = "select * from person";
try {
return queryRunner.query(sql,new BeanListHandler<>(Person.class));
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
版权声明:本文为Yeung_ZY原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。