🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## ResultSetMapper 如果想自己完全掌控结果集映射,可以使用ResultSetMapper,定义如下 ```java public interface ResultSetMapper<T> { /** * 将数据库查询结果集ResultSet映射到一个对象上,对象通过target指定 * @param ctx * @param target * @param resultSet * @param config 实现了ProviderConfig注解的注解,如果没有,则为空 * @return */ public List<T> mapping(ExecuteContext ctx, Class target, ResultSet resultSet, Annotation config) throws SQLException; } ``` ExecuteContext代表了执行上下文,比如SqlId,当前的SQLManager,入参等,一般很少需要关注,除非有些高级需求,比如BeetlSQL提供的JSON映射就是用到了ExecuteContext 一个简单的实现如下 ```java public class MyResultSetMapper implements ResultSetMapper<ResultSetObject>{ @Override public List<ResultSetObject> mapping(ExecuteContext ctx, Class target, ResultSet resultSet, Annotation config) throws SQLException { List<ResultSetObject> list = new ArrayList<>(); while(resultSet.next()){ ResultSetObject obj = new ResultSetObject(); obj.setMyId(resultSet.getInt("id")); obj.setMyName(resultSet.getString("name")); list.add(obj); } return list; } } ``` 有俩种方法使用ResultSetMapper,第一种在POJO使用注解 ```java @Data @ResultProvider(MyResultSetMapper.class) public class ResultSetObject{ private Integer myId; private String myName; } ``` 或者使用SQLManager.resultSetMapper(Class resultSetMapperClass),临时设置一次当前查询采用的映射类