数据库配置文件并mark好
# 数据库连接参数,注意不要配置错了
url=jdbc:mysql://localhost:3306?characterEncoding=utf8
username=root
password=root
driverClassName=com.mysql.jdbc.Driver
# 连接池的参数
initialSize=20
maxActive=30
maxWait=2000
一。自定义Druid工具类
编写德鲁伊工具类:
1.封装每次使用连接池连接数据库的相同步骤
2.获取连接池的方法
public class DruidUtil {
private static DataSource dataSource;
static {
try {
//1. 创建Properties对象
Properties properties = new Properties();
//2. 将配置文件转换成字节输入流
InputStream is = DruidUtil.class.getClassLoader().getResourceAsStream("druid.properties");
//3. 使用properties对象加载is
properties.load(is);
//druid底层是使用的工厂设计模式,去加载配置文件,创建DruidDataSource对象
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getDataSource(){
return dataSource;
}
}
二。commons-dbutils操作数据库
持久层处理数据库
//dbutils的类QueryRunner 给定数据库连接池做参数
QueryRunner 的操作数据库方法:
query方法与update方法
为什么只有两个方法?:操作数据库的区别就是查询有返回值不是查询就不用有返回值。
1.查询数据库:queryRunner.query(sql,"第二个参数",Object...);
第一个参数是要执行的sql语句。
第二个参数是返回值的类型:
1.返回值是单个数据
new ScalarHandler()
2.返回值是一行数据即一个java对象
new BeanHanler<>(JavaBean.class)
3.返回值是多行值即是java对象的集合
new BeanListHanler<>(JavaBean.class)
其中javabean是数据库查询到的数据封装到实体类的Class对象。
第三个参数是用来设置sql语句中?的值
2.增删改数据库:queryRunner.update(sql,id);
第一个参数是要执行的sql语句。
第二个参数是返回值的类型:
public class Dao {
QueryRunner queryRunner = new QueryRunner(DruidUtil.getDataSource());
public void delete(String id) throws SQLException {
String sql="delete from linkman where id = ?";
queryRunner.update(sql,id);
}
public List<LinkMan> getLinkman() throws SQLException {
String sql="select * from linkman";
List<LinkMan> list= queryRunner.query(sql,new BeanListHandler<>(LinkMan.class));
return list;
}
public void add(LinkMan linkMan) throws SQLException {
String sql="insert into linkman (name,sex,age,address,qq,email) values(?,?,?,?,?,?)";
queryRunner.update(sql,linkMan.getName(),linkMan.getSex(),linkMan.getAge(),linkMan.getAddress(),linkMan.getQq(),linkMan.getEmail());
}
public LinkMan findById(int id) throws SQLException {
String sql="select * from linkman where id=?";
LinkMan linkMan =queryRunner.query(sql,new BeanHandler<>(LinkMan.class),id);
return linkMan;
}
public void update(LinkMan linkMan) throws SQLException {
String sql="update linkman set name=? ,age=? ,sex=? ,address=?, qq=?, email=? where id=?";
queryRunner.update(sql,linkMan.getName(),linkMan.getAge(),linkMan.getSex(),linkMan.getAddress(),linkMan.getQq(), linkMan.getEmail(),linkMan.getId());
}
}