informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Saat menggunakan MyBatis Plus untuk pengoperasian database, terkadang kita perlu mendapatkan data dari beberapa tabel. Artikel ini akan memperkenalkan cara menerapkan kueri gabung kiri di MyBatis Plus. Kita akan mengambil dua tabel sebagai contoh, salah satunya adalah tabel kepala departemen (system_dept_leader
), dan yang lainnya adalah tabel pengguna (system_user
), dan mendemonstrasikan cara mendapatkan informasi rinci tentang pemimpin departemen, termasuk nama panggilan pengguna dan nomor kantor, melalui gabung kiri.
Misalkan kita memiliki dua tabel data berikut:
system_dept_leader
)Nama bidang | jenis | menggambarkan |
---|---|---|
pengenal | Panjang | kunci utama |
id_departemen | Panjang | ID Departemen |
identitas pengguna | Panjang | identitas pengguna |
adalah_utama | Bilangan bulat | Apakah itu penting |
system_user
)Nama bidang | jenis | menggambarkan |
---|---|---|
pengenal | Panjang | kunci utama |
nama panggilan | Rangkaian | nama panggilan |
kode_pekerja | Rangkaian | Nomor pekerjaan |
Kami akan mengimplementasikan kueri gabung kiri melalui langkah-langkah berikut:
Pertama, kita perlu mendefinisikan kelas hasil kueri untuk menyimpan hasil kueri.Di sini kita mendefinisikan aDeptLeaderDORespVO
Kelas, diwarisi dari kelas dasarDeptLeaderDOBaseVO
, dan berisi bidang nama panggilan dan nomor pekerjaan pengguna.
- @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;
- }
Selanjutnya, kita menulis kelas penyedia SQL untuk menghasilkan kueri SQL secara dinamis.digunakan di siniSelectProvider
Anotasi untuk menentukan SQL khusus.
- 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();
- }
- }
Terakhir, tentukan metode kueri di antarmuka Mapper dan gunakan SelectProvider
Anotasi menentukan penyedia 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);
- }
Metode kueri dipanggil di lapisan layanan dan hasilnya dikembalikan ke front end atau diproses lebih lanjut.
- @Service
- public class DeptLeaderService {
-
- @Autowired
- private DeptLeaderMapper deptLeaderMapper;
-
- public List<DeptLeaderDORespVO> getDeptLeaders(Long deptId, Long userId, Integer isPrimary) {
- return deptLeaderMapper.selectDeptLeaderWithUserDetails(deptId, userId, isPrimary);
- }
- }
Melalui langkah-langkah di atas, kami telah menerapkan metode penggunaan gabung kiri untuk menanyakan informasi rinci pimpinan departemen di MyBatis Plus. Metode ini dapat secara dinamis menghasilkan kueri SQL berdasarkan kondisi yang masuk untuk memperoleh informasi tentang pimpinan departemen dan pengguna terkaitnya. Metode ini sangat berguna ketika kueri data perlu dilakukan di beberapa tabel, sehingga memastikan fleksibilitas dan efisiensi kueri data.
Saya harap artikel ini dapat membantu Anda lebih memahami dan menggunakan MyBatis Plus untuk pertanyaan kompleks. Jika Anda memiliki pertanyaan atau kebutuhan lebih lanjut, Anda dipersilakan untuk berdiskusi dan berkomunikasi.