众所周知MybatiesPlus框架封装一些简单的操作数据库的方法, 但对于联表的一些操作3.4.0版本之前是没有任何封装方法的, 3.4版本之后提供了两个条件构造器并封装了一些联表操作的方法 !
1丶将Mybaties Plus升到 >= 3.4.0版本
2丶引用 jar 包 :
com.github.yulichang
mybatis-plus-join
1.1.8
3丶mapper继承MPJBaseMapper(它是继承了BaseMapper)
1丶不同 : 入参方式的不同, MPJLambdaWrapper更倾向于JAVA编辑, MPJQueryWrapper更倾向于数据库操作编辑 . 如下图 :
2丶相同点 : 都是联表查询构造器
@Test
public void test1() {
// 联表查询条数
Integer index = jzjlDao.selectJoinCount(
new MPJLambdaWrapper()
.eq(JZJLEntity::getKSBH,"001")
.leftJoin(KSGLEntity.class, KSGLEntity::getBH, JZJLEntity::getKSBH));
System.out.println(JSONObject.toJSONString(index));
// 联表查询单条
JZJLEntity entityA = jzjlDao.selectJoinOne(JZJLEntity.class,
new MPJLambdaWrapper()
.select(JZJLEntity::getXM)
.select(JZJLEntity::getJZSJ)
.selectAs(KSGLEntity::getMC,JZJLEntity::getKSMC)
.eq(JZJLEntity::getBH, "0001")
.leftJoin(KSGLEntity.class, KSGLEntity::getBH, JZJLEntity::getKSBH));
System.out.println(JSONObject.toJSONString(entityA));
// 联表查询多条数据
List listA = jzjlDao.selectJoinList(JZJLEntity.class,
new MPJLambdaWrapper()
.select(JZJLEntity::getXM)
.select(JZJLEntity::getJZSJ)
.selectAs(KSGLEntity::getMC,JZJLEntity::getKSMC)
.leftJoin(KSGLEntity.class, KSGLEntity::getBH, JZJLEntity::getKSBH));
System.out.println(JSONObject.toJSONString(listA));
// 联表分页查询
IPage iPage = jzjlDao.selectJoinPage(new Page(2, 10), JZJLEntity.class,
new MPJLambdaWrapper()
.selectAll(JZJLEntity.class)
.selectAs(KSGLEntity::getMC, JZJLEntity::getKSMC)
.leftJoin(KSGLEntity.class, KSGLEntity::getBH, JZJLEntity::getKSBH));
System.out.println(JSONObject.toJSONString(iPage.getRecords()));
// 联表查询单条Map
Map map = jzjlDao.selectJoinMap(
new MPJLambdaWrapper()
.selectAll(JZJLEntity.class)
.selectAs(KSGLEntity::getMC, JZJLEntity::getKSMC)
.eq(JZJLEntity::getBH, "0001")
.leftJoin(KSGLEntity.class, KSGLEntity::getBH, JZJLEntity::getKSBH));
System.out.println(JSONObject.toJSONString(map));
}
就写到这吧, 有问题下方留言 !