当前使用版本(必须填写清楚,否则不予处理)
<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