Criamos um aplicativo simples de trampolim no artigo anterior, que apresentará o uso do Spring-Data-JPA para operar o banco de dados.
Crie um novo banco de dados MySQL, onde o banco de dados é chamado SpringBoot e crie uma tabela de dados user_info como o objeto de tabela para nossa operação de exemplo.
A informação user_info é a seguinte:
Tabela soltada se existe `user_info`; crie a tabela` user_info` (`id` int (11) não nulo auto_increntry,` nome de usuário` varchar (255) nulo nulo, `` senha `` `` id`) `` senha` `` `id`)`-`` `` `` id ')), `senha'` `` id ')), o mestro' '-`` `id`)),` `` `` `` id'))). -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- user_info-- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Depois que o banco de dados e as tabelas são criados com sucesso, retorne ao nosso projeto
Etapa 0: Primeiro, apresente os pacotes de dependência do Maven de MySQL e JPA:
<Ependency> <PuerpId> mysql </frugiD> <stifactId> mysql-conector-java </stutifactId> </dependency> <pendence> <puperid> org.springframework.boot </roupid>
A primeira etapa é configurar as informações de conexão do banco de dados no arquivo de configuração YML:
Spring: DataSource: Driver-Class-Name: com.mysql.jdbc.driver URL: JDBC: mysql: // localhost: 3306/springboot? useunicode = true & caracterencoding = utf-8 & usessl = Falsename: raiz senha: 1011 JPA: Show-sql:
A segunda etapa é criar uma classe de entidade correspondente ao mapa da entidade da tabela de dados:
pacote com.javazhiyin; importar javax.persistence.entity; importar javax.persistence.GeneratedValue; importar javax.persistence.generationType; importar javax.persistence.id;/*** criado por 57783 em 20183/7/4/@@EntityPublic; GenerationType.Identity) ID inteiro privado; Nome de usuário privado de string; senha de sequência privada; public integer getId () {return id; } public void SetId (ID inteiro) {this.id = id; } public string getUserName () {return userName; } public void setUserName (string userName) {this.username = nome de usuário; } public string getPassword () {return senha; } public void setPassword (string senha) {this.password = senha; } public userInfo () {}}A terceira etapa é criar uma classe de repositório e herdar a classe JParepository:
pacote com.javazhiyin; importar org.springframework.data.jpa.repository.jparepository;/*** criado por 57783 em 2018/7/4.*/interface pública userinforepository estende jparepository <userInfo, inteiro> {}Aqui, herdamos a classe JParepository, que encapsula alguns métodos básicos para operações de banco de dados. Vamos verificar quais métodos estão disponíveis no jparepository através do código -fonte:
///// Código fonte recriado de um arquivo .class por Intellij Idea // (alimentado por Fernflower Decompiler) // pacote org.springframework.data.repositor var1); <S estende T> iterable <s> SavEall (iterable <s> var1); Opcional <t> findById (id var1); existe booleano (id var1); Iterable <T> findAll (); Iterable <t> findAllById (iterable <d> var1); long count (); void DeletebyId (id var1); excluir void (t var1); Void DeleTeall (iterable <? Extende T> var1); void DeLeTeall ();}
Etapa 4: Crie um novo controlador para implementar a operação de adicionar, excluir, modificar e verificar o banco de dados:
pacote com.javazhiyin; importar org.springframework.beans.factory.annotation.autowired; importar org.springframework.web.bind.annotation.*; import java.util.list;/*** criado por 57783 em 2018/7/4/@restCl. UserInforepository userinforepository; /*** Verifique* @return*/@getMapping (value = "/list") list <userInfo> getUserList () {return userinforepository.findall (); }/** * Adicione * @param nome de usuário * @param senha * @return */@postMapping (value = "/adduser") public userinfo adduser (@requestparam ("nome de usuário") string userName, @RequestParam ("senha) string) {userinfo userIs = userinfo (); user.setUserName (nome de usuário); user.setPassword (senha); return userInforepository.save (usuário); }/** * alteração * @param id * @param nome de usuário * @param senha * @return */@putMapping (value = "upduser/{id}") public userInfo updUser (@pathvariable ("id") integer id, @requestParam ("username") stringname, @requim) UserInfo (); user.setId (id); user.setUserName (nome de usuário); user.setPassword (senha); return userInforepository.save (usuário); }/*** exclua* @param id*/@deleletemapping (value = "deluser/{id}") public void deluser (@PathVariable ("id") ID inteiro) {userInfo user = new userInfo (); user.setId (id); userInforepository.delete (usuário); }}Para testar o código acima, usamos o Postman para testá -lo, o que é muito conveniente:
Teste de consulta:
Novos testes:
Modifique o teste:
Exclua o teste:
Podemos ver que todos os testes podem ser aprovados. O Springboot usa o Spring-Data-JPA para adicionar, excluir, modificar e verificar as operações são realmente bastante convenientes.
Várias perguntas:
1. Qual é o conceito e o uso da anotação @GeneratedValue na classe de mapeamento de entidades de objetos?
O JPA exige que cada entidade deve ter e tenha apenas uma chave primária, e a anotação @GeneratedValue gerará uma chave primária identificada exclusivamente para uma entidade.
A JPA fornece quatro estratégias de geração de chaves primárias, que são definidas no Type de geração de classe de enumeração, a saber::
GenerationType.Table
Use uma tabela de banco de dados específica para salvar a chave primária e o mecanismo de persistência gera a chave primária através de uma tabela específica no banco de dados relacional. A vantagem dessa estratégia é que ela não depende da implementação específica do ambiente e do banco de dados externos e pode ser facilmente portada entre diferentes bancos de dados. No entanto, como não pode utilizar completamente as características do banco de dados, ele não será usado primeiro.
GenerationType.Sequence
A auto-crescimento principal não é suportada em alguns bancos de dados, como o Oracle. Ele fornece um mecanismo chamado "sequência" para gerar teclas primárias. Neste momento, o generationType.Sequence pode ser usado como a política de geração de chaves primárias. As deficiências dessa estratégia são exatamente o oposto da tabela. Como apenas alguns bancos de dados (Oracle, PostgreSQL, DB2) são objetos de sequência de sequência, essa estratégia geralmente não é aplicada a outros bancos de dados.
GenerationType.Identity
Estratégia de auto-crescimento principal primária. Quando o banco de dados insere dados, ele atribui automaticamente valores à chave primária. Por exemplo, o MySQL pode declarar "Auto_increment" ao criar uma tabela para especificar o auto-crescimento da chave primária. Essa política é suportada na maioria dos bancos de dados (métodos ou palavras -chave especificadas podem ser diferentes), mas ainda existem alguns bancos de dados que não a suportam, por isso é um pouco menos portátil.
GenerationType.auto
Deixe a estratégia de geração de chaves primárias para o mecanismo de persistência. O mecanismo de persistência selecionará uma das três estratégias de geração de chaves primárias acima com base no banco de dados. Essa estratégia de geração de chaves primárias é mais comumente usada. Como a estratégia de geração padrão do JPA é o generationType.auto, você pode especificar explicitamente @GeneratedValue (estratégia = generationType.auto) ao usar essa estratégia ou @GeneratedValue diretamente.
2. Que interfaces o Spring Data JPA fornece e quais funções podem ser implementadas?
O código -fonte que pode ser executado neste artigo: https://github.com/javazhiyin/springboot/tree/master/bootdemo_01
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.