mybatis-plus-join是mybatis plus的一个多表插件,上手简单,十分钟不到就能学会全部使用方式,只要会用mp就会用这个插件,仅仅依赖了lombok,而且是扩展mp的构造器并非更改原本的构造器,不会对原有项目产生一点点影响,相信大多数项目都有这插件,四舍五入就是没依赖。
mybatis-plus-join示例:
gitee: https://gitee.com/mhb0409/mybatis-plus-join-example github: https://github.com/bobo667/mybatis-plus-join-example gitcode: https://gitcode.com/mahuibo123/mybatis-plus-join-example
mybatis-plus-join 仓库地址
gitee: https://gitee.com/mhb0409/mybatis-plus-join github: https://github.com/bobo667/mybatis-plus-join gitcode: https://gitcode.com/mahuibo123/mybatis-plus-join
如果需要加群,请加我微信我拉您进群
目前支持大部分mp常用版本
maven坐标
mybatis plus:3.2.0版本依赖地址:
<dependency>
<groupId>icu.mhb</groupId>
<artifactId>mybatis-plus-join</artifactId>
<version>1.2.0</version>
</dependency>
最新版本依赖地址:
<dependency>
<groupId>icu.mhb</groupId>
<artifactId>mybatis-plus-join-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
apt依赖地址:
<dependency>
<groupId>icu.mhb</groupId>
<artifactId>mybatis-plus-join-processor</artifactId>
<version>2.0.4</version>
</dependency>
标注:*号代表,从起始版本之后都是可以使用的
Mybatis-plus | Mybatis-plus-join |
---|---|
3.2.0 | 1.2.0 |
3.3.1 - 3.42 | 1.0.2、1.3.4.1 |
3.4.3.4 - 3.5.2 | 1.0.3 、1.0.4、1.0.5、1.0.6、1.0.8、1.0.9、1.1.1、1.1.2、1.1.3、1.1.4、1.1.5、1.1.6、1.3.1、1.3.2、1.3.3 |
3.5.3 - * | 1.3.3.1、1.3.4、1.3.5、1.3.5.1、1.3.6、1.3.7、1.3.8、2.0.4 |
在2.0版本中,支持apt进行代码生成,可使用chain方式调用,底层采用QueryWrapper实现,他几乎把字符串和lambda的优点都包含了,强烈推荐使用
UsersVo users = new UsersVo();
users.setUserName("setUserName");
users.setAgeName("setAgeName");
UsersChain usersChain = UsersChain.create();
UsersAgeChain ageChain = UsersAgeChain.create();
return Joins.chain(usersChain)
.selectAs(() -> {
return usersChain.userId().userName().createTime()
.to(ageChain)
.ageDoc().ageName().id();
})
.leftJoin(ageChain._id(), usersChain._ageId())
.joinAnd(ageChain, (w) -> w.eq(ageChain._id(1)))
.eqIfNull(() -> {
return usersChain.userName(users.getUserName())
.userId(users.getUserId())
.ageId(users.getAgeId())
.to(ageChain)
.ageName(users.getAgeName())
.ageDoc(users.getAgeDoc());
}).joinList(UsersVo.class);
List<UsersVo> list = Joins.of(Users.class)
.leftJoin(UsersAge.class,UsersAge::getAgeId,Users::getAgeId)
.eq(UsersAge::getAgeName,1).end()
.joinList(UsersVo.class);
// 生成SQL
SELECT
users.user_name,
users.create_time,
users.age_id,
users.content_json,
users.user_id
FROM
users AS users
LEFT JOIN users_age AS users_age ON users_age.id = users.age_id
WHERE
users_age.age_name = '1'