ngbatis icon indicating copy to clipboard operation
ngbatis copied to clipboard

return result structure tips

Open zhangxk-ocean opened this issue 2 years ago • 6 comments

使用map接收结果,有问题,结构如下: image xml语句如下: image 请问应该怎么将n这层结构给去掉呢,只保留字段这层结构

zhangxk-ocean avatar May 08 '23 06:05 zhangxk-ocean

如果对返回结果想做个适配业务的个性化处理,可以自定义结果处理器,继承AbstractResultHandler

按截图来看,这边的返回值类型是 Collection<Map>,在 ngbatis 中用的是 CollectionMapResultHandler.java, 自定义结果处理器可以参考这个,对 ResultSet 进行个性化的处理。

需要注意的是,在 Springboot 的入口类中,scanBasePackages 内值的顺序需要注意一下

@SpringBootApplication(scanBasePackages = {"org.nebula.contrib", "your.domain"})

项目包名放在 ngbatis 相关的包后面,从而使得自定义的 ResultHeandler 可以翻盖 ngbaits 中自带的

CorvusYe avatar May 08 '23 19:05 CorvusYe

对于结果集栏位只有一个的情况,一开始 Map 类型就没有进行处理, 后来担心对在用项目造成影响也就没有再做处理。 目前只有返回值是自定义实体类的情况对单栏位做了处理:https://github.com/nebula-contrib/ngbatis/blob/master/src/main/java/org/nebula/contrib/ngbatis/handler/ObjectResultHandler.java#L103

CorvusYe avatar May 08 '23 19:05 CorvusYe

好的

zhangxk-ocean avatar May 09 '23 08:05 zhangxk-ocean

image 使用官方的Node类的话,这里面的tag应该怎么取出来呢

zhangxk-ocean avatar May 09 '23 08:05 zhangxk-ocean

Node 类本身有个 tagNames 的方法,不过返回的是多个 tag,如果可以确定只有一个 tag,直接取第一个就行。 ResultSetUtil.java#L134

CorvusYe avatar May 09 '23 14:05 CorvusYe

感谢!

zhangxk-ocean avatar May 10 '23 06:05 zhangxk-ocean