【Java】jdbcTemplate.query() 查询的三种重载写法

jdbcTemplate.query() 三种重载形式

写法1:public <T> T query(final String sql, final ResultSetExtractor<T> rse)

String sql = "SELECT * FROM A_AUTH.auth_sysinfo";
List<AuthSysInfo> authSysInfoList = jdbcTemplate.query(sql, rs -> {
    List<AuthSysInfo> list = new ArrayList<>();
    while (rs.next()) {
        AuthSysInfo authSysInfo = new AuthSysInfo();
        authSysInfo.setSysId(rs.getString("SYS_ID"));
        authSysInfo.setSysName(rs.getString("SYS_NAME"));
        authSysInfo.setDelFlag(rs.getInt("DEL_FLAG"));

        list.add(authSysInfo); // 写法1: 需要 while 循环 ResultSet,返回列表
    }
    return list;
});

写法2:public void query(String sql, RowCallbackHandler rch)

// 查询 Oracle 数据
List<OrgCodeInfo> list = new ArrayList<>();
String sql = "SELECT * FROM A_AUTH.orgcodeinfo";
jdbcTemplate.query(sql, rs -> {
    OrgCodeInfo orgCodeInfo = new OrgCodeInfo();
    orgCodeInfo.setOrgCode(rs.getString("ORGCODE"));
    orgCodeInfo.setOrgName(rs.getString("ORGNAME"));
    orgCodeInfo.setIsComp(rs.getInt("ISCOMP"));
    orgCodeInfo.setCompId(rs.getString("COMPID"));
    orgCodeInfo.setOrgType(rs.getInt("ORGTYPE"));

    list.add(orgCodeInfo); // 写法2: 比较简练,直接在 lambda 里面操作,无返回值
});

写法3:public <T> List<T> query(String sql, RowMapper<T> rowMapper)

// 查询 Oracle 数据
String sql = "SELECT * FROM A_AUTH.auth_user_menu_res_item";
List<AuthUserMenuResItem> list = jdbcTemplate.query(sql, (rs, i) -> {
    AuthUserMenuResItem authUserMenuResItem = new AuthUserMenuResItem();
    authUserMenuResItem.setMenuId(rs.getLong("MENU_ID"));
    String userId = rs.getString("USER_ID");
    authUserMenuResItem.setUserId(userId);
    authUserMenuResItem.setSysId(rs.getInt("SYS_ID"));
    String resKey = rs.getString("RES_KEY");
    authUserMenuResItem.setResKey(resKey);
    return authUserMenuResItem; // 写法3:推荐,rowMapper 内部循环自己处理每行数据
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值