Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL के साथ स्प्रिंग बूट CRUD उदाहरण

यह उदाहरण आपको बताएगा कि MySQL डेटाबेस टेबल पर डेटाबेस टेबल ऑपरेशन डालने, अपडेट करने, हटाने और चयन करने के लिए स्प्रिंग बूट डेटा जेपीए का उपयोग कैसे करें। स्प्रिंग बूट डेटा जेपीए के साथ डेटाबेस टेबल ऑपरेशन कमांड को एक विधि में लपेटा गया है, आपको बस एक जावा इंटरफ़ेस बनाने की आवश्यकता है जो मूल स्प्रिंग बूट डेटा जेपीए रिपोजिटरी इंटरफ़ेस (उदाहरण के लिए CrudRepository) का विस्तार करता है। ), तो आपको केवल डेटाबेस तालिका संचालन विधि (जैसे findBy को परिभाषित करने की आवश्यकता है , हटाएं<कॉलम नाम>, आदि) कस्टम रिपोजिटरी इंटरफ़ेस में, और विधि नाम को विशेष नामकरण नियमों का पालन करना चाहिए। आपको रिपोजिटरी इंटरफ़ेस में SQL कमांड लिखने की आवश्यकता नहीं है।

<एच3>1. MySQL डेटाबेस टेबल बनाएं।
  1. dev2qa_example . नाम से एक MySQL डेटाबेस बनाएं . डेटाबेस का डिफ़ॉल्ट संयोजन utf8 – utf8_bin . होना चाहिए .
    SCHEMA बनाएँ `dev2qa_example` डिफ़ॉल्ट वर्ण सेट utf8 COLLATE utf8_bin;
  2. एक तालिका बनाएं user_account उपरोक्त में dev2qa_example नीचे दिए गए SQL कथन के साथ डेटाबेस। आईडी कॉलम AI . होना चाहिए (स्वचालित वृद्धि), अन्यथा एक त्रुटि स्प्रिंग बूट जेपीए तालिका 'dbname.hibernate_sequence' मौजूद नहीं है। (100) NULL, `पासवर्ड` VARCHAR(100) NULL, `ईमेल` VARCHAR(100) NULL, प्राथमिक कुंजी (`id`)) इंजन =InnoDBDEFAULT CHARACTER SET =utf8COLLATE =utf8_bin;
<एच3>2. स्प्रिंग बूट प्रोजेक्ट बनाएं।
  1. स्प्रिंग टूल सूट लॉन्च करें, फ़ाइल —> नया —> स्प्रिंग स्टार्टर प्रोजेक्ट पर क्लिक करें नीचे खोलने के लिए मेनू आइटम नया स्प्रिंग स्टार्टर प्रोजेक्ट जादूगर। नीचे की तरह इनपुट संबंधित परियोजना की जानकारी। और अगला बटन क्लिक करें।
  2. जेपीएजोड़ें , MySQL, और वेब निर्भरता विज़ार्ड में पुस्तकालय। और समाप्त करें . क्लिक करें प्रोजेक्ट इनिशियलाइज़ेशन को पूरा करने के लिए बटन।
<एच3>3. स्प्रिंग बूट जेपीए सीआरयूडी उदाहरण परियोजना फ़ाइलें।

इस परियोजना में स्रोत फ़ाइलें नीचे दी गई हैं। हम उनका एक-एक करके परिचय देंगे।

C:\WORKSPACE\WORK\DEV2QA.COM-EXAMPLE-CODE\SPRINGBOOT\SPINGBOOTCRUDMYSQL│ pom.xml└───src main │ java com dev2qa उदाहरण SpringBootCrudMySqlApplication.java नियंत्रक UserAccountController.java entity UserAccount.java repository UserAccountRepository.java resources │ application.properties test java com └───dev2qa SpringBootCrudMySqlApplicationTests। जावा

3.1 SpringBootCrudMySqlApplication.java

जावा क्लास शुरू करने वाला यह स्प्रिंग बूट उदाहरण है। इसे लोड किया जाएगा और सबसे पहले स्प्रिंग बूट एप्लिकेशन में चलाया जाएगा।

पैकेज com.dev2qa.example;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation. कॉन्फ़िगरेशन;//@SpringBootApplication@Configuration@ComponentScan(basePackages ={"com.dev2qa.example"})@EnableAutoConfigurationpublic क्लास स्प्रिंगबूटक्रूडमाईएसक्लएप्लीकेशन {सार्वजनिक स्थैतिक शून्य मुख्य(स्ट्रिंग[] args) { SpringApplication.run(SpringBootCrudMySqlApplication.class, args); }}

3.2 UserAccountController.java

यह स्प्रिंग एमवीसी कंट्रोलर जावा क्लास है जो यूजर रिक्वेस्ट यूआरएल को प्रोसेसिंग मेथड में मैप करेगा।

पैकेज com.dev2qa.example.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind। एनोटेशन.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import com.dev2qa.example. entity.UserAccount;import com.dev2qa.example.repository.UserAccountRepository;@Controller@RequestMapping(path ="/userAccount")पब्लिक क्लास UserAccountController { @Autowired UserAccountRepository userAccountRepository; /* * मैपिंग यूआरएल उदाहरण:* http://localhost:8080/userAccount/add?userName=Jerry&password=888888&email=* [email protected] * http://localhost:8080/userAccount/add?userName=Richard&password=888888&email =* [email protected] */ @GetMapping(path ="/add") @ResponseBody पब्लिक स्ट्रिंग एडयूजर (@RequestParam स्ट्रिंग यूजरनेम, @RequestParam स्ट्रिंग पासवर्ड, @RequestParam स्ट्रिंग ईमेल) { UserAccount userAccount =new UserAccount (); userAccount.setउपयोगकर्ता नाम (उपयोगकर्ता नाम); userAccount.setPassword (पासवर्ड); userAccount.setEmail (ईमेल); userAccountRepository.save(userAccount); स्ट्रिंग रिट ="उपयोगकर्ता खाता जोड़ा गया है, उपयोगकर्ता नाम =" + उपयोगकर्ता नाम + ", पासवर्ड =" + पासवर्ड + ", ईमेल =" + ईमेल; रिटर्न रिट; } /* * मैपिंग यूआरएल एक्समैपल:http://localhost:8080/userAccount/findAll */ @GetMapping(path ="/findAll") @ResponseBody पब्लिक स्ट्रिंग findAllUser() { StringBuffer retBuf =new StringBuffer(); सूची userAccountList =(सूची) userAccountRepository.findAll (); if (userAccountList !=null) { for (UserAccount userAccount :userAccountList) { retBuf.append("user name="); retBuf.append (userAccount.getUsername ()); retBuf.append(", पासवर्ड ="); retBuf.append (userAccount.getPassword ()); retBuf.append(", ईमेल ="); retBuf.append(userAccount.getEmail()); retBuf.append("\r\n"); } } अगर (retBuf.length() ==0) { retBuf.append ("कोई रिकॉर्ड नहीं मिला।"); } और { retBuf.insert(0, "
"); retBuf.append("
"); } वापसी retBuf.toString (); } /* * मैपिंग यूआरएल उदाहरण:* http://localhost:8080/userAccount/findByName?userName=Jerry */ @GetMapping(path ="/findByName") @ResponseBody पब्लिक स्ट्रिंग फाइंडबायनाम(@RequestParam स्ट्रिंग यूजरनेम) { StringBuffer retBuf =नया स्ट्रिंगबफर (); सूची userAccountList =(सूची) userAccountRepository.findByUsername(userName); if (userAccountList !=null) { for (UserAccount userAccount :userAccountList) { retBuf.append("user name="); retBuf.append (userAccount.getUsername ()); retBuf.append(", पासवर्ड ="); retBuf.append (userAccount.getPassword ()); retBuf.append(", ईमेल ="); retBuf.append(userAccount.getEmail()); retBuf.append("\r\n"); } } अगर (retBuf.length() ==0) { retBuf.append ("कोई रिकॉर्ड नहीं मिला।"); } वापसी retBuf.toString (); } /* * मैपिंग यूआरएल उदाहरण:* http://localhost:8080/userAccount/findByNameAndPassword?userName=Jerry&* password=888888 */ @GetMapping(path ="/findByNameAndPassword") @ResponseBody public String findByNameAndPassword(@RequestParam String userName , @RequestParam स्ट्रिंग पासवर्ड) { StringBuffer retBuf =new StringBuffer (); सूची userAccountList =(सूची) userAccountRepository .findByUsernameAndPassword (उपयोगकर्ता नाम, पासवर्ड); if (userAccountList !=null) { for (UserAccount userAccount :userAccountList) { retBuf.append("user name="); retBuf.append (userAccount.getUsername ()); retBuf.append(", पासवर्ड ="); retBuf.append (userAccount.getPassword ()); retBuf.append(", ईमेल ="); retBuf.append(userAccount.getEmail()); retBuf.append("
"); } } अगर (retBuf.length() ==0) { retBuf.append ("कोई रिकॉर्ड नहीं मिला।"); } वापसी retBuf.toString (); } /* * मैपिंग यूआरएल उदाहरण:* http://localhost:8080/userAccount/updateUser?userName=Jerry&password=hello&* [email protected] */ @GetMapping(path ="/updateUser") @ResponseBody पब्लिक स्ट्रिंग अपडेटयूजर( @RequestParam स्ट्रिंग उपयोगकर्ता नाम, @RequestParam स्ट्रिंग पासवर्ड, @RequestParam स्ट्रिंग ईमेल) { StringBuffer retBuf =new StringBuffer (); सूची userAccountList =userAccountRepository.findByUsername(userName); if (userAccountList !=null) { for (UserAccount userAccount :userAccountList) { userAccount.setUsername(userName); userAccount.setPassword (पासवर्ड); userAccount.setEmail (ईमेल); userAccountRepository.save(userAccount); } } retBuf.append ("उपयोगकर्ता डेटा अपडेट सफलतापूर्वक।"); वापसी retBuf.toString (); } /* * मैपिंग यूआरएल उदाहरण:* http://localhost:8080/userAccount/deleteByUserName?userName=Richard */ @GetMapping(path ="/deleteByUserName") @ResponseBody पब्लिक स्ट्रिंग डिलीटबाययूजरनाम(@RequestParam स्ट्रिंग यूजरनेम) { StringBuffer retBuf =नया स्ट्रिंगबफर (); userAccountRepository.deleteByUsername(userName); retBuf.append ("उपयोगकर्ता डेटा सफलतापूर्वक हटा दिया गया है।"); वापसी retBuf.toString (); } /* * मैपिंग यूआरएल उदाहरण:* http://localhost:8080/userAccount/deleteByUserNameAndPassword?userName=* रिचर्ड&पासवर्ड=888888 */ @GetMapping(path ="/deleteByUserNameAndPassword") @ResponseBody public String deleteByUserNameAndPassword(@RequestParam String userName, @RequestParam स्ट्रिंग पासवर्ड) { StringBuffer retBuf =new StringBuffer (); userAccountRepository.deleteByUsernameAndPassword (उपयोगकर्ता नाम, पासवर्ड); retBuf.append ("उपयोगकर्ता डेटा सफलतापूर्वक हटा दिया गया है।"); वापसी retBuf.toString (); }}

3.3 UserAccount.java

यह इकाई जावा वर्ग है जिसे MySQL तालिका में मैप किया जाएगा user_account . कृपया ध्यान दें आईडी जनरेट करने की रणनीति GenerationType.IDENTITY . होनी चाहिए , यदि आप Generation.AUTO . का उपयोग करते हैं और MySQL टेबल आईडी कॉलम ऑटो-इन्क्रीमेंट पर सेट है, फिर एक एरर आएगा।

पैकेज com.dev2qa.example.entity;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;/* इस इकाई वर्ग को user_account तालिका में मैप करें। */@Entity(name ="user_account") पब्लिक क्लास UserAccount { @Id @GeneratedValue(strategy =GenerationType.IDENTITY) प्राइवेट लॉन्ग आईडी; @javax.persistence.Column(name ="user_name") निजी स्ट्रिंग उपयोगकर्ता नाम; निजी स्ट्रिंग पासवर्ड; निजी स्ट्रिंग ईमेल; पब्लिक लॉन्ग गेटआईड () {रिटर्न आईडी; } public void setId(Long id) {this.id =id; } सार्वजनिक स्ट्रिंग getUsername() { उपयोगकर्ता नाम वापस करें; } सार्वजनिक शून्य सेट यूज़रनेम (स्ट्रिंग यूज़रनेम) {this.username =यूज़रनेम; } सार्वजनिक स्ट्रिंग getPassword () { पासवर्ड लौटाएं; } सार्वजनिक शून्य सेटपासवर्ड (स्ट्रिंग पासवर्ड) { यह पासवर्ड =पासवर्ड; } सार्वजनिक स्ट्रिंग getEmail() { वापसी ईमेल; } सार्वजनिक शून्य सेटईमेल (स्ट्रिंग ईमेल) { यह ईमेल =ईमेल; }}

3.4 UserAccountRepository.java

यह कस्टम स्प्रिंग बूट डेटा JPA रिपॉजिटरी इंटरफ़ेस है जो CrudRepository . का विस्तार करता है . आपको संबंधित विधियों को परिभाषित करने की आवश्यकता है, फिर विधि को लागू करने के लिए वसंत ढांचा स्वचालित रूप से संबंधित SQL कमांड चलाएगा। इससे कोडिंग अधिक तेज़ी से होती है।

पैकेज com.dev2qa.example.repository;import java.util.List;import org.springframework.data.repository.CrudRepository;import org.springframework.transaction.annotation.Transactional;import com.dev2qa.example.entity. UserAccount;सार्वजनिक इंटरफ़ेस UserAccountRepository CrudRepository का विस्तार करता है {/* * उपयोगकर्ता नाम से उपयोगकर्ता सूची प्राप्त करें। कृपया ध्यान दें कि प्रारूप * findBy होना चाहिए। */ सूची <उपयोगकर्ता खाता> FindByUsername (स्ट्रिंग उपयोगकर्ता नाम); /* * उपयोगकर्ता नाम और पासवर्ड द्वारा उपयोगकर्ता सूची प्राप्त करें। कृपया ध्यान दें कि प्रारूप *findByऔर होना चाहिए। */ सूची <उपयोगकर्ता खाता> findByUsernameAndPassword (स्ट्रिंग उपयोगकर्ता नाम, स्ट्रिंग पासवर्ड); @transactional शून्य हटाएं ByUsernameAndPassword (स्ट्रिंग उपयोगकर्ता नाम, स्ट्रिंग पासवर्ड); @Transactional void deleteByUsername(String Username);}

3.5 application.properties

यह संसाधन फ़ाइल है जिसमें उदाहरण द्वारा उपयोग किया गया MySQL JDBC डेटा स्रोत कनेक्शन डेटा है।

# MySQL jdbc कनेक्शन url.spring.datasource.url=jdbc:mysql://localhost:3306/dev2qa_example# MySQL jdbc ड्राइवर क्लास का नाम.spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver# MySQL डेटाबेस यूजरनेम और पासवर्डस्प्रिंग.डेटासोर्स.यूजरनेम=rootspring.datasource.password=root

3.6 pom.xml

<प्रोजेक्ट xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:// www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0। xsd"> 4.0.0 com.example SpringBootCRUDMySQL <संस्करण>0.0.1-स्नैपशॉट <पैकेजिंग>जार SpringBootCRUDMySQL <विवरण> क्रूड ऑपरेशन के साथ स्प्रिंग बूट एक्सेस mysql।  org.springframework.boot spring-boot-starter-parent <संस्करण>2.1.0.रिलीज <रिलेटिवपाथ/>