使用德鲁伊连接池之前需要三个jar包
链接: https://pan.baidu.com/s/1iVMoSvpDKZ6qOrWIfCv_PA 提取码: z5hx 复制这段内容后打开百度网盘手机App,操作更方便哦
配置文件db.properties
druid.url=jdbc:mysql://localhost:3306/ttt
druid.username=root
druid.password=root
druid.driverClassName=com.mysql.jdbc.Driver
druid.maxActive=20
工具类DbUtils.java
package utils;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.*;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Properties;
/**
* @Author hasee
* @Date 2019/11/14
*/
public class DbUtils {
private static DataSource dataSource;
private static Properties config = new Properties();
static {
initConfig();
}
public static void initConfig() {
try {
config.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
} catch (IOException e) {
System.out.println("读取配置文档失败");
}
}
public static synchronized DataSource getDataSource() {
if (dataSource == null) {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.configFromPropety(config);
dataSource = druidDataSource;
}
return dataSource;
}
//更新操作
public static void update(String sql, Object... args) {
QueryRunner queryRunner = new QueryRunner(getDataSource());
try {
queryRunner.update(sql, args);
} catch (SQLException e) {
e.printStackTrace();
}
}
//插入并返回最新插入的主键
public static int insert(String sql, Object... args) throws SQLException {
QueryRunner queryRunner = new QueryRunner(getDataSource());
Object o = queryRunner.insert(sql, new ScalarHandler<>(), args);
Long id = Long.parseLong(o.toString());
return id.intValue();
}
//查询单行数据并返回t的对象
public static <T> T selectOne2Bean(String sql, Class<T> cls, Object... args) {
QueryRunner queryRunner = new QueryRunner(getDataSource());
T t = null;
try {
t = queryRunner.query(sql, new BeanHandler<>(cls), args);
} catch (SQLException e) {
e.printStackTrace();
}
return t;
}
//返回对象的集合
public static <T> List<T> select2Beans(String sql, Class<T> cls, Object... args) {
QueryRunner queryRunner = new QueryRunner(getDataSource());
List<T> list = null;
try {
list = queryRunner.query(sql, new BeanListHandler<>(cls), args);
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
//返回一个Map
public static Map<String, Object> selectone2Map(String sql, Object... args) throws SQLException {
QueryRunner queryRunner = new QueryRunner(getDataSource());
return queryRunner.query(sql, new MapHandler(), args);
}
//返回一个Map的集合List
public static List<Map<String, Object>> select2Maps(String sql, Object... args) throws SQLException {
QueryRunner queryRunner = new QueryRunner(getDataSource());
return queryRunner.query(sql, new MapListHandler(), args);
}
}
测试类 Test.java
import utils.DbUtils;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
/**
* @Description
* @Author hasee
* @Date 2019/11/16
*/
public class Test {
public static void main(String[] args) throws SQLException {
//查询所有
List<Map<String, Object>> articles = DbUtils.select2Maps("select * from article");
for (Map<String, Object> article : articles) {
for (String s : article.keySet()) {
System.out.print(s + "\t" + article.get(s) + "\t");
}
System.out.println();
}
System.out.println("-----------------------分割线-----------------------");
//查询单行
Map<String, Object> article = DbUtils.selectone2Map("select * from article where id = ?", 3);
for (String s : article.keySet()) {
System.out.println(s + "\t" + article.get(s));
}
System.out.println("-----------------------分割线-----------------------");
//查询单行并封装一个article对象
Article article1 = DbUtils.selectOne2Bean("select * from article where id = ?", Article.class, 3);
System.out.println(article1);
System.out.println("-----------------------分割线-----------------------");
//查询所有
List<Article> articles1 = DbUtils.select2Beans("select * from article", Article.class);
for (Article article2 : articles1) {
System.out.println(article2);
}
}
}