τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Όταν χρησιμοποιούμε το MyBatis Plus για λειτουργίες βάσης δεδομένων, μερικές φορές χρειάζεται να λαμβάνουμε δεδομένα από πολλούς πίνακες. Αυτό το άρθρο θα εισαγάγει τον τρόπο εφαρμογής του αριστερού ερωτήματος σύνδεσης στο MyBatis Plus. Θα πάρουμε ως παράδειγμα δύο πίνακες, ο ένας είναι ο πίνακας επικεφαλής τμήματος (system_dept_leader
), και το άλλο είναι ο πίνακας χρηστών (system_user
), και δείχνει πώς να αποκτήσετε τις λεπτομερείς πληροφορίες του επικεφαλής του τμήματος μέσω μιας αριστερής σύνδεσης, συμπεριλαμβανομένου του ψευδώνυμου και του αριθμού εργασίας του χρήστη.
Ας υποθέσουμε ότι έχουμε τους ακόλουθους δύο πίνακες δεδομένων:
system_dept_leader
)Ονομα πεδίου | τύπος | περιγράφω |
---|---|---|
ταυτότητα | Μακρύς | πρωτεύων κλειδί |
dept_id | Μακρύς | Ταυτότητα Τμήματος |
ταυτότητα χρήστη | Μακρύς | ταυτότητα χρήστη |
είναι_πρωτεύον | Ακέραιος αριθμός | Είναι σημαντικό |
system_user
)Ονομα πεδίου | τύπος | περιγράφω |
---|---|---|
ταυτότητα | Μακρύς | πρωτεύων κλειδί |
παρατσούκλι | Σειρά | Παρατσούκλι |
worker_code | Σειρά | ΑΡΙΘΜΟΣ δουλειας |
Θα εφαρμόσουμε το αριστερό ερώτημα σύνδεσης μέσω των παρακάτω βημάτων:
Αρχικά, πρέπει να ορίσουμε μια κλάση αποτελεσμάτων ερωτήματος για την αποθήκευση των αποτελεσμάτων ερωτημάτων.Εδώ ορίζουμε αDeptLeaderDORespVO
Κλάση, που κληρονομήθηκε από την βασική κλάσηDeptLeaderDOBaseVO
και περιέχει τα πεδία του ψευδώνυμου και του αριθμού εργασίας του χρήστη.
- @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;
- }
Στη συνέχεια, γράφουμε μια κλάση παρόχου SQL για τη δυναμική δημιουργία ερωτημάτων SQL.χρησιμοποιείται εδώSelectProvider
Σχολιασμοί για τον καθορισμό προσαρμοσμένης SQL.
- 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();
- }
- }
Τέλος, ορίστε τη μέθοδο ερωτήματος στη διεπαφή Mapper και χρησιμοποιήστε SelectProvider
Ο σχολιασμός καθορίζει τον πάροχο SQL.
- @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);
- }
Η μέθοδος ερωτήματος καλείται στο επίπεδο εξυπηρέτησης και τα αποτελέσματα επιστρέφονται στο μπροστινό μέρος ή υποβάλλονται σε περαιτέρω επεξεργασία.
- @Service
- public class DeptLeaderService {
-
- @Autowired
- private DeptLeaderMapper deptLeaderMapper;
-
- public List<DeptLeaderDORespVO> getDeptLeaders(Long deptId, Long userId, Integer isPrimary) {
- return deptLeaderMapper.selectDeptLeaderWithUserDetails(deptId, userId, isPrimary);
- }
- }
Μέσα από τα παραπάνω βήματα, έχουμε εφαρμόσει τη μέθοδο χρήσης του αριστερού συνδέσμου για την αναζήτηση λεπτομερών πληροφοριών των υπευθύνων τμημάτων στο MyBatis Plus. Αυτή η μέθοδος μπορεί να δημιουργήσει δυναμικά ερωτήματα SQL με βάση τις εισερχόμενες συνθήκες για τη λήψη πληροφοριών σχετικά με τους επικεφαλής των τμημάτων και τους συνδεδεμένους χρήστες τους. Αυτή η μέθοδος είναι πολύ χρήσιμη όταν το ερώτημα δεδομένων πρέπει να εκτελεστεί σε πολλούς πίνακες, διασφαλίζοντας την ευελιξία και την αποτελεσματικότητα του ερωτήματος δεδομένων.
Ελπίζω αυτό το άρθρο να σας βοηθήσει να κατανοήσετε καλύτερα και να χρησιμοποιήσετε το MyBatis Plus για πολύπλοκα ερωτήματα. Εάν έχετε οποιεσδήποτε ερωτήσεις ή περαιτέρω ανάγκες, είστε ευπρόσδεκτοι να συζητήσετε και να επικοινωνήσετε.