1.Apache DBUtils
官网地址:commons.apache.org/proper/comm…
1.1 初始配置
DButils中提供了一个QueryRunner类,它对数据库的增删改查的方法进行了封装,获取QueryRunner的方式
private static final String PROPERTY_PATH = "druid.properties"; private static DruidDataSource dataSource; private static QueryRunner queryRunner; public static void init() { Properties properties = new Properties(); InputStream in = DBUtils.class.getClassLoader().getResourceAsStream(PROPERTY_PATH); try { properties.load(in); } catch (IOException e) { e.printStackTrace(); } dataSource = new DruidDataSource(); dataSource.configFromPropety(properties); // 使用数据源初始化 QueryRunner queryRunner = new QueryRunner(dataSource); } 复制代码
创建QueryRunner对象的时候我们需要传递一个DataSource对象,这时我们可以选择Druid或者Hikai等常用的连接池工具,我这儿用的是Druid。
druid.username=root druid.password=123456 druid.url=jdbc:mysql://localhost:3306/mybatisdb?characterEncoding=utf-8&serverTimezone=UTC druid.minIdle=10 druid.maxActive=30 复制代码
1.2 基本操作
QueryRunner中提供的方法解决了重复代码的问题,传入数据源解决了资源管理的问题。而对于ResultSet结果集的处理则是通过 ResultSetHandler 来处理。我们可以自己来实现该接口
/** * 查询所有的用户信息 * @throws Exception */ public void queryUser() throws Exception{ DruidUtils.init(); QueryRunner queryRunner = DruidUtils.getQueryRunner(); String sql = "select * from t_user"; List<User> list = queryRunner.query(sql, new ResultSetHandler<List<User>>() { @Override public List<User> handle(ResultSet rs) throws SQLException { List<User> list = new ArrayList<>(); while(rs.next()){ User user = new User(); user.setId(rs.getInt("id")); user.setUserName(rs.getString("user_name")); user.setRealName(rs.getString("real_name")); user.setPassword(rs.getString("password")); list.add(user); } return list; } }); for (User user : list) { System.out.println(user); } } 复制代码
或者用DBUtils中提供的默认的相关实现来解决
/** * 通过ResultHandle的实现类处理查询 */ public void queryUserUseBeanListHandle() throws Exception{ DruidUtils.init(); QueryRunner queryRunner = DruidUtils.getQueryRunner(); String sql = "select * from t_user"; // 不会自动帮助我们实现驼峰命名的转换 List<User> list = queryRunner.query(sql, new BeanListHandler<User>(User.class)); for (User user : list) { System.out.println(user); } } 复制代码
通过Apache 封装的DBUtils是能够很方便的帮助我们实现相对比较简单的数据库操作