当前使用版本(必须填写清楚,否则不予处理)

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.3.0</version>
    </dependency>

问题是啥

比如 Account 对象有 id,name,password,status 四个字段/成员变量。 一个实例 acc,其中 id = 1, password = 123,其他成员变量都为null 我希望可以

mapper.selectOne(new QueryWrapper<>(acc));
//或者
 mapper.selectOne(new QueryWrapper<Account>().allEq(acc));

就从数据库中查询有无这样的(id=1,password=123,为null的成员变量不进入where条件语句)的记录。。 然后我看了文档,最简单的实现方式是使用 json 工具?

ObjectMapper jackson = new ObjectMapper();
mapper.selectOne(new QueryWrapper<>().allEq(jackson.convertValue(acc, Map.class)));

这样子么?

我看了文档的快速开始,里面举的例子是查表中全部数据,所以传个null,没有触及到我的问题。看了条件构造器一章,感觉上是用这样的方法。。如果有更快捷的方式,不知能否告知,并且补充到“快速开始”一章里?

谢谢。

Comment From: XSun771

再请问下 mybatis-plus 能否不使用 xml 做到处理一对多和一对一?

我自己搜到这样一篇资料 https://www.jianshu.com/p/9f085dd2c6c4

还是要先创建对应 xml ,然后设置 resultMap 后在其中使用 assosiation 或者 collection 标签。请问这个是 mybatis-plus 的推荐用法不?如果是的话希望能在文档中给出。

不过这个用法里,assosiation 或 collection 标签里绑定的 select 也就意味着一定要自己写,不能复用 BaseMapper 对么?

谢谢

Comment From: miemieYaho

就这么用 mapper.selectOne(new QueryWrapper<>(acc)); 有join自己写xml

Comment From: XSun771

就这么用 mapper.selectOne(new QueryWrapper<>(acc)); 有join自己写xml

感谢解答,但 new QueryWrapper<>(acc) 这种写法是否在文档中并没有提及?我再看了“条件构造器”一章,QueryWrapper和它的父类AbstractWrapper都没有关于自身构造器的描述。所以如果确实是没有的话能否之后补全呢

另外能回答一下第二楼的问题么?

谢谢

Comment From: miemieYaho

怎么就没写,你好好看看AbstractWrapper的说明,可以指定成你自己的resultmap,反正不推荐进行多表操作,select 就填 yourMapper.selctById