(六)springboot+mybatis plusは多表連調査ページ3を実現する.Xバージョン
注記:前の2つの文章ではspringboot+mybatis-plusの単一テーブルに対するCRUDと条件コンストラクタの使用方法について説明しましたが、私たちの実戦プロジェクトでは多表連査もよく見られます.今日はspringboot+MPモードでマルチテーブル検索とページングを実現する方法について説明します.
プロジェクトソースダウンロード場所|gitee
MPはトウモロコシチームが自分でパッケージしたページングプラグイン、すなわちPaginationInterceptorページングブロッカーを推奨しています.では、次はページングプラグインを統合します.プロジェクトの使用中に問題が発生した場合は、ソースコードをダウンロードして見ると、問題点を見つけることができます.解決できない場合は、下のブログに伝言を残して、伝言を見てから問題を解決することができます.
1ページング・プラグインの構成
ページ分けプラグインが配置された後、プロジェクトの中で各レベルのコードを自動的に生成する必要があります.ここでは自動生成の過程を説明しません.知らない子供靴があれば、MPの3編目のブログを見ることができます.
複数のテーブルを結合して調べると、異なるテーブルを返すフィールドが表示される可能性があります.自動生成されたテーブルが戻り条件を満たすことができない場合は、戻りエンティティを自動的に生成する必要があります.次のエンティティは、ユーザー・テーブルとロール・テーブルを含む2つの戻りエンティティです.
2戻りエンティティの作成
3テストTest
4サービス層
ここのbaseMapperは自分で定義したものではありません.直接thisを通じて.baseMapper呼び出しでいいです.これはパッケージされています.
5 mapper層
上のコードは私が直接注釈を通じてsqlクエリーを行ったので、mapperを通じてもいいです.xmlは行います.ここではページング条件を設定する必要はありません.自動的にsqlのつなぎ合わせを行います.ここではsqlの終わりに注意してください.No自動パッチlimitから完了できません
6テスト結果
以上のテスト結果から分かるように、総クエリーバー数は391本で、ページング後にlimit 0,10クエリーをクエリーするのに61 msかかります.ここではMPのページングプラグインで多表連査を行い、ページングしてプレゼンテーションが完了し、皆さんの指摘を心から受け入れます.
下一篇:(五)springboot+mybatis plus強大な条件コンストラクタqueryWrapper、updateWrapper
上一篇:あとで
プロジェクトソースダウンロード場所|gitee
MPはトウモロコシチームが自分でパッケージしたページングプラグイン、すなわちPaginationInterceptorページングブロッカーを推奨しています.では、次はページングプラグインを統合します.プロジェクトの使用中に問題が発生した場合は、ソースコードをダウンロードして見ると、問題点を見つけることができます.解決できない場合は、下のブログに伝言を残して、伝言を見てから問題を解決することができます.
1ページング・プラグインの構成
package com.lqf.multitable.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement
@Configuration
@MapperScan("com.lqf.multitable.dao.*")
public class MybatisPlusConfig {
/**
* mybatis-plus SQL 【 】
*/
@Bean
public PerformanceInterceptor performanceInterceptor() {
return new PerformanceInterceptor();
}
/*
* , , 【 】
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
ページ分けプラグインが配置された後、プロジェクトの中で各レベルのコードを自動的に生成する必要があります.ここでは自動生成の過程を説明しません.知らない子供靴があれば、MPの3編目のブログを見ることができます.
複数のテーブルを結合して調べると、異なるテーブルを返すフィールドが表示される可能性があります.自動生成されたテーブルが戻り条件を満たすことができない場合は、戻りエンティティを自動的に生成する必要があります.次のエンティティは、ユーザー・テーブルとロール・テーブルを含む2つの戻りエンティティです.
2戻りエンティティの作成
package com.lqf.multitable.bean.crm;
import com.sun.corba.se.spi.presentation.rmi.IDLNameTranslator;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* @author : lqf
* @Description :
* @date : Create in 18:14 2018/10/3
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserRoleVo {
private Long userId;
/**
*
*/
private LocalDateTime createTime;
/**
*
*/
private LocalDateTime updateTime;
/**
*
*/
private String username;
/**
*
*/
private String password;
/**
*
*/
private String realname;
/**
* (0 1 )
*/
private Integer sex;
/**
*
*/
private String mobile;
/**
*
*/
private String passwordMd5;
/**
*
*/
private Long parentId;
/**
* 0 1
*/
private Integer status;
/**
*
*/
private String authArea;
/**
*
*/
private String authCity;
private Integer role;
/**
*
*/
private Integer residueCardNumber;
/**
*
*/
private LocalDateTime lastLoginTime;
/**
* ip
*/
private String lastLoginIp;
/**
*
*/
private Integer lastLoginCount;
/**
*
*/
private String authChannel;
/**
* 0 1
*/
private Integer internet;
/**
*
*/
private Long goldCoin;
private Long id;
/**
*
*/
private String statusId;
/**
*
*/
private String roleName;
/**
*
*/
private String roleValue;
/**
*
*/
private String addibleValue;
}
3テストTest
package com.lqf.multitable;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lqf.multitable.bean.crm.UserRoleVo;
import com.lqf.multitable.service.crm.FyUserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootMybatisPlusMultiTableApplicationTests {
@Autowired
private FyUserService service;
/**
*
*/
@Test
public void contextLoads() {
// , page
Page page = new Page<>(1, 10);
page.setRecords(service.selectUserListPage(page));
System.out.println(page);
}
}
4サービス層
package com.lqf.multitable.service.crm.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lqf.multitable.bean.crm.FyUser;
import com.lqf.multitable.bean.crm.UserRoleVo;
import com.lqf.multitable.dao.crm.FyUserMapper;
import com.lqf.multitable.service.crm.FyUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
*
*
*
* @author lqf
* @since 2018-10-02
*/
@Service
public class FyUserServiceImpl extends ServiceImpl implements FyUserService {
@Override
public List selectUserListPage(Page page) {
return this.baseMapper.selectUserListPage(page);
}
}
ここのbaseMapperは自分で定義したものではありません.直接thisを通じて.baseMapper呼び出しでいいです.これはパッケージされています.
5 mapper層
package com.lqf.multitable.dao.crm;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lqf.multitable.bean.crm.FyUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lqf.multitable.bean.crm.UserRoleVo;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
*
* Mapper
*
*
* @author lqf
* @since 2018-10-02
*/
@Repository
public interface FyUserMapper extends BaseMapper {
@Select("SELECT * FROM fy_user u LEFT JOIN fy_role r ON u.role = r.id")
List selectUserListPage(Page pagination);
}
上のコードは私が直接注釈を通じてsqlクエリーを行ったので、mapperを通じてもいいです.xmlは行います.ここではページング条件を設定する必要はありません.自動的にsqlのつなぎ合わせを行います.ここではsqlの終わりに注意してください.No自動パッチlimitから完了できません
6テスト結果
==> Preparing: SELECT COUNT(1) FROM fy_user u LEFT JOIN fy_role r ON u.role = r.id
==> Parameters:
<== Columns: COUNT(1)
<== Row: 391
==> Preparing: SELECT * FROM fy_user u LEFT JOIN fy_role r ON u.role = r.id LIMIT 0,10
==> Parameters:
<== Columns: user_id, create_time, update_time, username, password, realname, sex, mobile, password_md5, parent_id, status, auth_area, auth_city, role, residue_card_number, last_login_time, last_login_ip, last_login_count, auth_channel, internet, gold_coin, id, status_id, create_time, update_time, role_name, role_value, addible_value
********* ,
<== Total: 10
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@63c12e52]
com.baomidou.mybatisplus.extension.plugins.pagination.Page@5d2828c9
Time:61 ms - ID:com.lqf.multitable.dao.crm.FyUserMapper.selectUserListPage
Execute SQL:SELECT * FROM fy_user u LEFT JOIN fy_role r ON u.role = r.id LIMIT 0,10
以上のテスト結果から分かるように、総クエリーバー数は391本で、ページング後にlimit 0,10クエリーをクエリーするのに61 msかかります.ここではMPのページングプラグインで多表連査を行い、ページングしてプレゼンテーションが完了し、皆さんの指摘を心から受け入れます.
下一篇:(五)springboot+mybatis plus強大な条件コンストラクタqueryWrapper、updateWrapper
上一篇:あとで