🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## RowMapper BeetlSQL完成默认的映射,你可以自定义一个RowmMapper子类,完成额外的映射 ```java public interface RowMapper<T> { /** * * @param obj 正常处理后的对象 * @param rs 结果集 * @param rowNum 处理的记录位置(第几条记录):可以只针对某一条记录做特殊处理 * @param config 注解相关配置,参考 {@link ProviderConfig} * @throws SQLException * @return T */ T mapRow(ExecuteContext ctx, Object obj, ResultSet rs, int rowNum, Annotation config) throws SQLException; } ``` RowMapper会在BeetlSQL默认映射结果集的基础上做**额外处理**,比如,有些未映射的也可以通过`ResultSet rs` 中调用获取 ```java public static class MyRowMapper implements RowMapper<UserVo>{ @Override public UserVo mapRow(ExecuteContext ctx, Object obj, ResultSet rs, int rowNum, Annotation config) throws SQLException { //内置的映射已经完成 UserVo vo = (UserVo)obj; //额外取得结果集 String col = rs.getString("col"); vo.setExtraAttribute(col); return vo; } } ``` 有俩种方式可以使用RowMapper,一种是通过在POJO上加上注解@RowProvider ```java @RowProvider(MyRowMapper.class) public class UserVo2 { //忽略其他属性 public void setExtraAttribute(String col){} } ``` 另外一种是SQLManager.rowMapper 方法,临时设置一次当前查询使用RowMapper(这种方式不常用) ```java sqlManager.rowMapper(MyRowMapper.class).select(sqlId,xxxx.class,paras); ``` 当查询结果返回后,rowMapper使用结束。除非再次调用rowMapper方法