自定义ResultSetHandler的实现类完成查询操作

来自姬鸿昌的知识库
Jihongchang讨论 | 贡献2023年1月14日 (六) 07:21的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

https://www.bilibili.com/video/BV1eJ411c7rf/?p=54

    /**
     * 定义ResultSetHandler的实现类完成查询操作
     * ScalarHandler:是 ResultSetHandler 接口的实现类,对应查询结果中的单个值
     */
    @Test
    public void testCustomizedQuery() {
        Connection conn = null;
        String sql = "select id, name, email, birth from customers where id = ?";
        Customer c = null;

        /*
        AbstractKeyedHandler, AbstractListHandler, ArrayHandler, ArrayListHandler, BaseResultSetHandler,
        BeanHandler, BeanListHandler, BeanMapHandler, ColumnListHandler,
        KeyedHandler, MapHandler, MapListHandler, ScalarHandler
         */
        QueryRunner runner = new QueryRunner();

        ResultSetHandler<Customer> rsh = new ResultSetHandler<Customer>() {
            @Override
            public Customer handle(ResultSet rs) throws SQLException {
                if (rs.next()) {
                    int id = rs.getInt("id");
                    String name = rs.getString("name");
                    String email = rs.getString("email");
                    Date birth = rs.getDate("birth");
                    Customer c = new Customer(id, name, email, birth);
                    return c;
                }
                return null;
            }
        };

        try {

            conn = JDBCUtils.getConnectionFromDruid();

            c = runner.query(conn, sql, rsh,9);

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.closeResource(conn, null);
        }

        System.out.println(c);

    }
Customer{id=9, name='蔡徐坤', email='caixukun@126.com', birth=1997-09-08}

https://github.com/jihch/jdbc_2/blob/main/src/main/java/io/github/jihch/dbutils/QueryRunnerTest.java