Мы создали простое приложение Springboot в предыдущей статье, которое введет использование Spring-Data-JPA для управления базой данных.
Создайте новую базу данных MySQL, где база данных называется Springboot, и создайте таблицу данных user_info в качестве объекта таблицы для нашей работы примера.
Информация user_info заключается в следующем:
Drop Table, если существует `user_info`; создать таблицу` user_info` (`id` int (11) не null auto_increment,` username` varchar (255) null по умолчанию, `password` varchar (255) по умолчанию null, первичный ключ (` id`)) Engine = myisam auto_increment = 3 defaul arset = utf8; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
После успешного создания базы данных и таблиц, вернитесь к нашему проекту
Шаг 0: Во -первых, представьте пакеты зависимостей Maven MySQL и JPA:
<depervice> <groupid> mysql </groupid> <ratifactid> mysql-connector-java </artifactid> </depervice> <depervice> <groupid> org.springframework.boot </GroupId> <Artifactid> Spring-boot-starter-jpa </artifactid> </зависимость> </зависимость> </зависимость>
Первым шагом является настройка информации об подключении базы данных в файле конфигурации YML:
Весна: DataSource: Driver-Class-Name: com.mysql.jdbc.driver url: jdbc: mysql: // localhost: 3306/springboot? useunicode = true & haremencoding = utf-8 и usessl = false username: root пароль: 1011 jpa: show-sql: true:
Второй шаг - создать класс объектов, соответствующий карте объектов таблицы данных:
Пакет com.javazhiyin; импорт javax.persistence.entity; import javax.persistence.generatedValue; import javax.persistence.generationtype; импорт javax.persistence.id;/*** Создан 57783 на 2018/7/4/4.*/@entitypubl class uerfi GenerationType.Identity) Частный целочисленный идентификатор; частное имя пользователя; Private String Password; public integer 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 пароль; } public void setPassword (String password) {this.password = password; } public userInfo () {}}Третий шаг - создать класс репозитория и наследовать класс JParePository:
пакет com.javazhiyin; импорт org.springframework.data.jpa.repository.jparepository;/*** Создан 57783 на 2018/7/4/4.*/public userinfository extends jparepository <userinfo, integer> {}Здесь мы наследуем класс JParePository, который инкапсулирует некоторые основные методы для операций базы данных. Давайте проверим, какие методы доступны в JparePository через исходный код:
///// Источный код, воссозданный из файла .class с помощью Intellij Idea // (Powered By Fernflower Decropiler) // пакет org.springframework.data.repository; import java.util.optional; @norepositorybeanpublic interface crudrepository <t, id> extends repository <t, id> {sepositors <T, id> aemendends <t, id> aepository <t, id> aepository <t, id> aepository <t, id> aepository <t, id> aepository <t, id> aepositorior var1); <S расширяет t> итерабильный <s> saveall (итерабильный <s> var1); Необязательно <t> findbyId (id var1); Boolean существует (ID var1); Итерабильный <t> findall (); Итерабильный <t> findallbyId (итерабильный <id> var1); длительный счет (); void deletebyid (id var1); void delete (t var1); void deleteAll (итерабильный <? Extends T> var1); void deleteAll ();}Шаг 4: Создайте новый контроллер для реализации операции добавления, удаления, изменения и проверки базы данных:
пакет com.javazhiyin; import org.springframework.beans.factory.annotation.autowired; import org.springframework.web.bindtation.*; import java.util.list;/*** cellow use usterinfoconfoconfoconfocontrollrollor Userinforepository userinforePository; /*** Проверьте* @return*/@getmapping (value = "/list") public list <userInfo> getUserList () {return userinforePository.findall (); }/** * добавить * @param username * @param password * @return */@postmapping (value = "/adduser") public userinfo adduser (@requestparam ("username") string username, @requestparam ("пароль") String password) {userInfo user = new userInfo (); user.setusername (имя пользователя); user.setpassword (пароль); return userinforepository.save (пользователь); }/** * Изменение * @param id * @param username * @param password * @return */@putmapping (value = "uduzer/{id}") public userinfo uduster (@pathvariable ("id") integer id, @requestparam ("username") string usernam UserInfo (); user.setid (id); user.setusername (имя пользователя); user.setpassword (пароль); return userinforepository.save (пользователь); }/*** Удалить* @param id*/@deletemapping (value = "deluser/{id}") public void deluser (@pathvariable ("id") integer id) {userinfo user userinfo (); user.setid (id); userinforepository.delete (пользователь); }}Чтобы проверить приведенный выше код, мы используем почтальон для его проверки, что очень удобно:
Тест на запрос:
Новые тесты:
Измените тест:
Удалить тест:
Мы видим, что все тесты могут быть пройдены. Springboot использует Spring-Data-JPA для добавления, удаления, модификации и проверки операций действительно довольно удобно.
Несколько вопросов:
1. Какова концепция и использование аннотации @GeneratedValue в классе картирования объектов?
JPA требует, чтобы каждая сущность должна была иметь, и имел только один первичный ключ, а аннотация @GeneratedValue генерирует уникальный идентифицированный первичный ключ для сущности.
JPA предоставляет четыре стратегии первичных ключевых поколений, которые определены в The Endumeration Class Generationtype, а именно:
GenerationType.table
Используйте конкретную таблицу базы данных для сохранения первичного ключа, а двигатель Persistence генерирует первичный ключ через конкретную таблицу в реляционной базе данных. Преимущество этой стратегии состоит в том, что она не зависит от конкретной реализации внешней среды и базы данных и может быть легко переносит между различными базами данных. Однако, поскольку он не может полностью использовать характеристики базы данных, она не будет использоваться в первую очередь.
GenerationType.sequence
Первичный ключевой саморазвитие не поддерживается в некоторых базах данных, таких как Oracle. Он обеспечивает механизм, называемый «последовательность» для генерации первичных ключей. В настоящее время в качестве основной политики генерации основного генерации можно использовать последовательность. Недостатки этой стратегии точно противоположны таблице. Поскольку только некоторые базы данных (Oracle, PostgreSQL, DB2) поддерживают объекты последовательности, эта стратегия, как правило, не применяется к другим базам данных.
GenerationType.Identity
Основная ключевая стратегия саморастания. Когда база данных вставляет данные, она автоматически назначит значения первичному ключу. Например, MySQL может объявить «AUTO_INCREMENT» при создании таблицы для указания саморазвита первичного ключа. Эта политика поддерживается в большинстве баз данных (указанные методы или ключевые слова могут быть разными), но все еще есть несколько баз данных, которые не поддерживают их, поэтому она немного менее портативна.
GenerationType.Auto
Оставьте стратегию первичной ключевой генерации в движке постоянства. Двигатель Persistence выберет одну из трех вышеупомянутых стратегий генерации первичных ключей, основанных на базе данных. Эта первичная стратегия генерации ключевого поколения используется чаще. Поскольку стратегия генерации по умолчанию JPA является GenerationType.Auto, вы можете явно указать @GeneratedValue (стратегия = GenerationType.Auto) при использовании этой стратегии или @GeneratedValue напрямую.
2. Какие интерфейсы предоставляют Spring Data JPA и какие функции могут быть реализованы?
Исходный код, который можно запустить в этой статье: https://github.com/javazhiyin/springboot/tree/master/bootdemo_01
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.