多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 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),临时设置一次当前查询采用的映射类