Kami membangun aplikasi Springboot sederhana di artikel sebelumnya, yang akan memperkenalkan penggunaan Spring-Data-JPA untuk mengoperasikan database.
Buat database MySQL baru, di mana database disebut springboot, dan buat tabel data user_info sebagai objek tabel untuk contoh operasi kami.
Informasi user_info adalah sebagai berikut:
DROP TABLE IF EXISTS `user_info`;CREATE TABLE `user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;-- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Setelah database dan tabel dibuat dengan sukses, kembali ke proyek kami
Langkah 0: Pertama, perkenalkan paket ketergantungan Maven dari MySQL dan JPA:
<dependency> <GroupId> mysql </sroupid> <ArtifactId> mysql-connector-java </t Artifactid> </gandendency> <dependency> <groupid> org.springframework.boot </groupid> <Artifactid> </Artifactid> </Artifactid> </Artifactid> </Artifactid>
Langkah pertama adalah mengonfigurasi informasi koneksi database dalam file konfigurasi YML:
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&useSSL=false username: root password: 1011 jpa: show-sql: true
Langkah kedua adalah membuat kelas entitas yang sesuai dengan peta entitas tabel data:
Paket com.javazhiyin; import javax.persistence.entity; impor javax.persistence.generatedValue; import javax.persistence.generationType; impor javax.persistence.id;/*** Dibuat oleh 57783 pada 2018/7/4.*/srersistence; classer = classer = @idgenerasi @id @id @id @id @id @id @idrened @id @ider. GenerationType.Identity) ID integer pribadi; nama pengguna string pribadi; kata sandi string pribadi; Integer publik getId () {return id; } public void setid (integer id) {this.id = id; } public string getUserName () {return username; } public void setusername (string username) {this.username = username; } public string getPassword () {return kata sandi; } public void setPassword (kata sandi string) {this.password = kata sandi; } UserInfo publik () {}}Langkah ketiga adalah membuat kelas repositori dan mewarisi kelas JParepository:
Paket com.javazhiyin; impor org.springframework.data.jpa.repository.jparepository;/*** Dibuat oleh 57783 pada 2018/7/4.*/Antarmuka publik UserInforepository memperluas jparepository <usinfo, integer> {}}Di sini kami mewarisi kelas JParepository, yang merangkum beberapa metode dasar untuk operasi basis data. Mari kita periksa metode apa yang tersedia di JParepository melalui kode sumber:
///// Kode Sumber Diciptakan dari file .Class oleh Intellij Idea // (Didukung oleh Fernflower Decompiler) // Paket org.springframework.data.repository; impor java.util.optional; @norepositorybeanpository crudrepository ton <norepository {t t t, var1); <S extends t> iterable <s> saveall (iterable <s> var1); Opsional <T> findById (id var1); boolean ada di sana (id var1); Iterable <t> findAll (); Iterable <t> findAllById (iterable <d> var1); jumlah panjang (); void deletebyId (id var1); void delete (t var1); void deleteAll (iterable <? Extends t> var1); void deleteall ();}Langkah 4: Buat pengontrol baru untuk mengimplementasikan pengoperasian penambahan, menghapus, memodifikasi, dan memeriksa database:
Paket com.javazhiyin; impor org.springframework.beans.factory.annotation.Autowired; impor org.springframework.web.bind.annotation.*; import java.util.list;/*** Dibuat oleh 57783 pada 2018/7/7/4.*RestConRoll; UserInforepository userInforepository; /*** Periksa* @return*/@getMapping (value = "/list") Daftar publik <UserInfo> getUserList () {return userInforepository.findall (); }/** * Tambahkan * @param nama pengguna * @param kata sandi * @return */@postmapping (value = "/adduser") Public UserInfo adduser (@RequestParam ("Username") String Username, @RequestParam ("Kata Sandi") Kata sandi) {Userinfo Userinfo (new UserInfo (); user.setusername (nama pengguna); user.setPassword (kata sandi); kembalikan userInforepository.save (pengguna); }/** * Ubah * @param id * @param nama pengguna * @param kata sandi * @return */@putmapping (value = "upduser/{id}") UserInfo UserFo UpdUser (@PathVariable ("ID") Integer ID, @ReQuestParam ("userName") string username, "@re" @re) {"@requestparam (" UserName ") string username," @re "@REQUESTPARAM (" UserName ") UserName," @REQUESTPARAM ("UserName") UserNameMer ("UserName") UserInfo (); user.setid (id); user.setusername (nama pengguna); user.setPassword (kata sandi); kembalikan userInforepository.save (pengguna); }/*** hapus* @param id*/@deleteMapping (value = "deluser/{id}") public void deluser (@pathvariable ("id") integer id) {userInfo user = UserInfo baru (); user.setid (id); userInforepository.delete (pengguna); }}Untuk menguji kode di atas, kami menggunakan tukang pos untuk mengujinya, yang sangat nyaman:
Tes kueri:
Tes baru:
Ubah tes:
Hapus tes:
Kita dapat melihat bahwa semua tes dapat dilewati. Springboot menggunakan Spring-Data-JPA untuk menambah, menghapus, memodifikasi, dan memeriksa operasi memang cukup nyaman.
Beberapa pertanyaan:
1. Apa konsep dan penggunaan anotasi @GeneratedValue di kelas pemetaan entitas objek?
JPA mensyaratkan bahwa setiap entitas entitas harus memiliki dan hanya memiliki satu kunci utama, dan anotasi @GeneratedValue akan menghasilkan kunci utama yang diidentifikasi secara unik untuk suatu entitas.
JPA menyediakan empat strategi generasi kunci utama, yang didefinisikan dalam tipe generasi kelas enumerasi, yaitu:
GenerationType.table
Gunakan tabel basis data tertentu untuk menyimpan kunci utama, dan mesin persistence menghasilkan kunci utama melalui tabel tertentu dalam database relasional. Keuntungan dari strategi ini adalah tidak tergantung pada implementasi spesifik dari lingkungan eksternal dan database, dan dapat dengan mudah diangkut di antara berbagai database. Namun, karena tidak dapat sepenuhnya memanfaatkan karakteristik database, itu tidak akan digunakan terlebih dahulu.
GenerationType.Squence
Pertumbuhan diri kunci primer tidak didukung dalam beberapa database, seperti Oracle. Ini memberikan mekanisme yang disebut "urutan" untuk menghasilkan kunci primer. Pada saat ini, GenerationType.Setence dapat digunakan sebagai kebijakan generasi kunci utama. Kekurangan dari strategi ini adalah kebalikan dari tabel. Karena hanya beberapa basis data (Oracle, PostgreSQL, DB2) mendukung objek urutan, strategi ini umumnya tidak diterapkan pada database lain.
GenerationType.Identity
Strategi Pertumbuhan Diri Utama Primer. Ketika database memasukkan data, itu akan secara otomatis menetapkan nilai ke kunci utama. Misalnya, MySQL dapat mendeklarasikan "auto_increment" saat membuat tabel untuk menentukan pertumbuhan diri utama primer. Kebijakan ini didukung di sebagian besar database (metode atau kata kunci yang ditentukan mungkin berbeda), tetapi masih ada beberapa database yang tidak mendukungnya, sehingga sedikit kurang portabel.
GenerationType.auto
Tinggalkan strategi generasi kunci utama ke mesin kegigihan. Mesin Persistence akan memilih salah satu dari tiga strategi pembuatan kunci utama di atas berdasarkan database. Strategi generasi kunci utama ini lebih umum digunakan. Karena strategi generasi default JPA adalah generasi.
2. Antarmuka apa yang disediakan JPA data pegas dan fungsi apa yang dapat diimplementasikan?
Kode sumber yang dapat dijalankan dalam artikel ini: https://github.com/javazhiyin/springboot/tree/master/bootdemo_01
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.