Teknologian jakaminen

Kuinka toteuttaa Mybatis left join

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Kun käytämme MyBatis Plus -tietokantatoimintoihin, meidän on joskus hankittava tietoja useista taulukoista. Tämä artikkeli esittelee, kuinka vasemmanpuoleinen liittymiskysely otetaan käyttöön MyBatis Plusissa. Otamme esimerkkinä kaksi pöytää, joista toinen on osastopäällikön pöytä (system_dept_leader), ja toinen on käyttäjätaulukko (system_user), ja näyttää, kuinka saat yksityiskohtaiset tiedot osaston johtajasta vasemman liitoksen kautta, mukaan lukien käyttäjän lempinimi ja työnumero.

Tietotaulukon rakenne

Oletetaan, että meillä on seuraavat kaksi datataulukkoa:

Osaston johtotaulukko (system_dept_leader)

Kenttä nimityyppikuvata
idPitkäpääavain
osastotunnusPitkäOsaston tunnus
käyttäjätunnusPitkäkäyttäjätunnus
on_ensisijainenKokonaislukuOnko se tärkeää

 

käyttäjätaulukko (system_user)

Kenttä nimityyppikuvata
idPitkäpääavain
NimimerkkimerkkijonoNimimerkki
työntekijä_koodimerkkijonoTyönumero

Toteutusvaiheet

Toteutamme vasemmanpuoleisen liitoskyselyn seuraavien vaiheiden avulla:

  1. Määritä kyselyn tulosluokka
  2. SQL-palveluntarjoajan kirjoittaminen
  3. Määritä kyselymenetelmä Mapperin käyttöliittymässä

1. Määritä kyselyn tulosluokka

Ensin meidän on määritettävä kyselyn tulosluokka kyselyn tulosten tallentamista varten.Tässä määrittelemme aDeptLeaderDORespVO Luokka, peritty perusluokastaDeptLeaderDOBaseVO, ja sisältää käyttäjän lempinimi- ja työnumerokentät.

  1. @Data
  2. @EqualsAndHashCode(callSuper = true)
  3. @ToString(callSuper = true)
  4. public class DeptLeaderDORespVO extends DeptLeaderDOBaseVO {
  5. private Long id;
  6. @NotNull(message = "Department不能为空")
  7. private Long deptId;
  8. @NotNull(message = "User不能为空")
  9. private Long userId;
  10. @NotNull(message = "Is Primary不能为空")
  11. private Integer isPrimary;
  12. private String nickname;
  13. private String workerCode;
  14. }

2. Kirjoita SQL-palveluntarjoaja

Seuraavaksi kirjoitamme SQL-palveluntarjoajan luokan SQL-kyselyjen dynaamiselle luomiselle.käytetty täälläSelectProvider Huomautukset mukautetun SQL:n määrittämiseksi.

  1. public class DeptLeaderSqlProvider {
  2. public String selectDeptLeaderWithUserDetails(Map<String, Object> params) {
  3. Long deptId = (Long) params.get("deptId");
  4. Long userId = (Long) params.get("userId");
  5. Integer isPrimary = (Integer) params.get("isPrimary");
  6. StringBuilder sql = new StringBuilder();
  7. sql.append("SELECT dl.*, su.nickname, su.worker_code AS workerCode ");
  8. sql.append("FROM system_dept_leader dl ");
  9. sql.append("LEFT JOIN system_user su ON dl.user_id = su.id ");
  10. sql.append("WHERE 1=1 ");
  11. if (deptId != null) {
  12. sql.append("AND dl.dept_id = #{deptId} ");
  13. }
  14. if (userId != null) {
  15. sql.append("AND dl.user_id = #{userId} ");
  16. }
  17. if (isPrimary != null) {
  18. sql.append("AND dl.is_primary = #{isPrimary} ");
  19. }
  20. sql.append("ORDER BY dl.id DESC");
  21. return sql.toString();
  22. }
  23. }

3. Määritä kyselymenetelmä Mapperin käyttöliittymässä

Lopuksi määritä kyselymenetelmä Mapperin käyttöliittymässä ja käytä sitä SelectProvider Annotaatio määrittää SQL-palveluntarjoajan.

  1. @Mapper
  2. public interface DeptLeaderMapper extends BaseMapperX<DeptLeaderDO> {
  3. @SelectProvider(type = DeptLeaderSqlProvider.class, method = "selectDeptLeaderWithUserDetails")
  4. List<DeptLeaderDORespVO> selectDeptLeaderWithUserDetails(@Param("deptId") Long deptId,
  5. @Param("userId") Long userId,
  6. @Param("isPrimary") Integer isPrimary);
  7. }

4. Kutsu palvelukerroksen menetelmä

Kyselymenetelmä kutsutaan palvelukerroksessa ja tulokset palautetaan käyttöliittymään tai käsitellään edelleen.

  1. @Service
  2. public class DeptLeaderService {
  3. @Autowired
  4. private DeptLeaderMapper deptLeaderMapper;
  5. public List<DeptLeaderDORespVO> getDeptLeaders(Long deptId, Long userId, Integer isPrimary) {
  6. return deptLeaderMapper.selectDeptLeaderWithUserDetails(deptId, userId, isPrimary);
  7. }
  8. }

Tee yhteenveto

Yllä olevien vaiheiden kautta olemme ottaneet käyttöön menetelmän, jossa käytetään vasemmanpuoleista liittämistä osastojohtajien yksityiskohtaisten tietojen kyselyyn MyBatis Plusissa. Tämä menetelmä voi luoda dynaamisesti SQL-kyselyitä saapuvien olosuhteiden perusteella saadakseen tietoa osastojen johtajista ja niihin liittyvistä käyttäjistä. Tämä menetelmä on erittäin hyödyllinen, kun tietokysely on suoritettava useissa taulukoissa, mikä varmistaa tietokyselyn joustavuuden ja tehokkuuden.

Toivon, että tämä artikkeli auttaa sinua ymmärtämään ja käyttämään MyBatis Plus -ohjelmaa monimutkaisissa kyselyissä. Jos sinulla on kysyttävää tai muita tarpeita, olet tervetullut keskustelemaan ja kommunikoimaan.