2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
दत्तांशकोशसञ्चालनार्थं MyBatis Plus इत्यस्य उपयोगं कुर्वन् कदाचित् अस्माभिः बहुभ्यः सारणीभ्यः आँकडानां प्राप्तिः आवश्यकी भवति । अस्मिन् लेखे MyBatis Plus इत्यस्मिन् left join query इत्यस्य कार्यान्वयनस्य परिचयः भविष्यति । उदाहरणरूपेण द्वौ सारणी गृह्णामः, एकः विभागप्रमुखसारणी (system_dept_leader
), अपरः च उपयोक्तृसारणी (system_user
), तथा च विभागनेतुः विस्तृतसूचनाः वामसंयोगद्वारा कथं प्राप्तुं शक्यते इति प्रदर्शयति, यत्र उपयोक्तुः उपनाम कार्यसङ्ख्या च सन्ति ।
मानातु यत् अस्माकं कृते निम्नलिखितद्वयं दत्तांशसारणी अस्ति ।
system_dept_leader
)क्षेत्रनाम | प्रकारः | वर्णेतु |
---|---|---|
id | दीर्घम् | प्राथमिक कुञ्जी |
dept_id | दीर्घम् | विभाग आईडी |
उपयोक्तृ_परिचयः | दीर्घम् | उपयोक्तृपरिचयः |
इति_प्राथमिकम् | पूर्णाङ्कः | किं महत्त्वपूर्णम् अस्ति |
system_user
)क्षेत्रनाम | प्रकारः | वर्णेतु |
---|---|---|
id | दीर्घम् | प्राथमिक कुञ्जी |
उपनाम | सूत्र | निक नाम |
श्रमिक_संहिता | सूत्र | नौकरी संख्या |
वयं निम्नलिखितपदार्थानाम् माध्यमेन left join query कार्यान्विष्यामः ।
प्रथमं प्रश्नपरिणामान् संग्रहीतुं क्वेरी परिणामवर्गं परिभाषितुं आवश्यकम् ।अत्र वयं क इति परिभाषयामः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 interface मध्ये query method परिभाष्य उपयोगं कुर्वन्तु 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 इत्यस्मिन् विभागनेतृणां विस्तृतसूचनाः पृच्छितुं left join इत्यस्य उपयोगस्य पद्धतिं कार्यान्वितवन्तः। एषा पद्धतिः विभागनेतृणां तेषां सम्बद्धानां च उपयोक्तृणां विषये सूचनां प्राप्तुं आगच्छन्तीनां परिस्थितीनां आधारेण गतिशीलरूपेण SQL प्रश्नान् जनयितुं शक्नोति । यदा बहुसारणीषु दत्तांशप्रश्नस्य आवश्यकता भवति तदा एषा पद्धतिः अतीव उपयोगी भवति, येन दत्तांशप्रश्नस्य लचीलतां कार्यक्षमतां च सुनिश्चितं भवति ।
आशासे यत् एषः लेखः भवन्तं जटिलप्रश्नानां कृते MyBatis Plus इत्यस्य अधिकतया अवगन्तुं उपयोगं च कर्तुं साहाय्यं कर्तुं शक्नोति। यदि भवतः किमपि प्रश्नं वा अधिकानि आवश्यकतानि वा सन्ति तर्हि चर्चां कर्तुं संवादं च कर्तुं भवतः स्वागतम्।