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.
Oletetaan, että meillä on seuraavat kaksi datataulukkoa:
system_dept_leader
)Kenttä nimi | tyyppi | kuvata |
---|---|---|
id | Pitkä | pääavain |
osastotunnus | Pitkä | Osaston tunnus |
käyttäjätunnus | Pitkä | käyttäjätunnus |
on_ensisijainen | Kokonaisluku | Onko se tärkeää |
system_user
)Kenttä nimi | tyyppi | kuvata |
---|---|---|
id | Pitkä | pääavain |
Nimimerkki | merkkijono | Nimimerkki |
työntekijä_koodi | merkkijono | Työnumero |
Toteutamme vasemmanpuoleisen liitoskyselyn seuraavien vaiheiden avulla:
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.
- @Data
- @EqualsAndHashCode(callSuper = true)
- @ToString(callSuper = true)
- public class DeptLeaderDORespVO extends DeptLeaderDOBaseVO {
-
- private Long id;
-
- @NotNull(message = "Department不能为空")
- private Long deptId;
-
- @NotNull(message = "User不能为空")
- private Long userId;
-
- @NotNull(message = "Is Primary不能为空")
- private Integer isPrimary;
-
- private String nickname;
- private String workerCode;
- }
Seuraavaksi kirjoitamme SQL-palveluntarjoajan luokan SQL-kyselyjen dynaamiselle luomiselle.käytetty täälläSelectProvider
Huomautukset mukautetun SQL:n määrittämiseksi.
- public class DeptLeaderSqlProvider {
-
- public String selectDeptLeaderWithUserDetails(Map<String, Object> params) {
- Long deptId = (Long) params.get("deptId");
- Long userId = (Long) params.get("userId");
- Integer isPrimary = (Integer) params.get("isPrimary");
-
- StringBuilder sql = new StringBuilder();
- sql.append("SELECT dl.*, su.nickname, su.worker_code AS workerCode ");
- sql.append("FROM system_dept_leader dl ");
- sql.append("LEFT JOIN system_user su ON dl.user_id = su.id ");
- sql.append("WHERE 1=1 ");
- if (deptId != null) {
- sql.append("AND dl.dept_id = #{deptId} ");
- }
- if (userId != null) {
- sql.append("AND dl.user_id = #{userId} ");
- }
- if (isPrimary != null) {
- sql.append("AND dl.is_primary = #{isPrimary} ");
- }
- sql.append("ORDER BY dl.id DESC");
- return sql.toString();
- }
- }
Lopuksi määritä kyselymenetelmä Mapperin käyttöliittymässä ja käytä sitä SelectProvider
Annotaatio määrittää SQL-palveluntarjoajan.
- @Mapper
- public interface DeptLeaderMapper extends BaseMapperX<DeptLeaderDO> {
-
- @SelectProvider(type = DeptLeaderSqlProvider.class, method = "selectDeptLeaderWithUserDetails")
- List<DeptLeaderDORespVO> selectDeptLeaderWithUserDetails(@Param("deptId") Long deptId,
- @Param("userId") Long userId,
- @Param("isPrimary") Integer isPrimary);
- }
Kyselymenetelmä kutsutaan palvelukerroksessa ja tulokset palautetaan käyttöliittymään tai käsitellään edelleen.
- @Service
- public class DeptLeaderService {
-
- @Autowired
- private DeptLeaderMapper deptLeaderMapper;
-
- public List<DeptLeaderDORespVO> getDeptLeaders(Long deptId, Long userId, Integer isPrimary) {
- return deptLeaderMapper.selectDeptLeaderWithUserDetails(deptId, userId, isPrimary);
- }
- }
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.