spring-boot 集成jpa 持久层

来源:互联网 发布:淘宝设计论坛 编辑:程序博客网 时间:2024/06/03 14:45

spring-boot 集成jpa 持久层

说明

jpa 建议项目只做持久操作. 案列使用的mysql数据库
演示是基于第一个版本

pom修改

        <!--添加单元测试 begin -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <!-- 添加单元测试 end -->        <!-- 使用 Spring-data-jpa 持久层 begin -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-jpa</artifactId>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.21</version>        </dependency>        <!-- 使用 Spring-data-jpa 持久层 end -->

添加数据库配置文件

spring.datasource.url = jdbc:mysql://localhost:3306/数据库名字?useUnicode=true&characterEncoding=UTF-8spring.datasource.username = rootspring.datasource.password = *****spring.datasource.driverClassName = com.mysql.jdbc.Driverspring.jpa.show-sql = true# Hibernate ddl auto (create, create-drop, update)spring.jpa.hibernate.ddl-auto =none

Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto =none //none 实体类和db结构不映射 ..
官方推荐的是 update –程序启动自动更新表结构

User domain 源码

package com.jade.domian;import java.io.Serializable;import javax.persistence.*;@Entity@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u")public class User implements Serializable {    private static final long serialVersionUID = 1L;    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private String id;    private int age;    @Column(name = "email_address")    private String emailAddress;    private String username;    public User() {    }    public String getId() {        return this.id;    }    public void setId(String id) {        this.id = id;    }    public int getAge() {        return this.age;    }    public void setAge(int age) {        this.age = age;    }    public String getEmailAddress() {        return this.emailAddress;    }    public void setEmailAddress(String emailAddress) {        this.emailAddress = emailAddress;    }    public String getUsername() {        return this.username;    }    public void setUsername(String username) {        this.username = username;    }}

UserRepository 源码

package com.jade.repository;import org.springframework.data.jpa.repository.JpaRepository;import com.jade.domian.User;/** *  *@author jade *@date 2016年7月14日下午2:51:51 *@version 1.0 */public interface UserRepository  extends JpaRepository<User, String> {}

添加UserRepository 继承 JpaRepository

继承关系: JpaRepository -PagingAndSortingRepository>CrudRepository->Repository

JpaRepository 官网源码如下:

/** * JPA specific extension of {@link org.springframework.data.repository.Repository}. *  * @author Oliver Gierke */@NoRepositoryBeanpublic interface JpaRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID> @NoRepositoryBeanpublic interface PagingAndSortingRepository<T, ID extends Serializable> extends CrudRepository<T, ID> {@NoRepositoryBeanpublic interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {

修改Application

package com.jade;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.data.jpa.repository.config.EnableJpaRepositories;/** * api 项目入口 *  * @author jade * @version 1.0 * @date 2016-07-14  */@Configuration@ComponentScan@EnableAutoConfiguration@EnableJpaRepositoriespublic class Application {    public static void main(String[] args) {     SpringApplication.run(Application.class, args);}}

测试

package main.java;import java.util.List;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.SpringApplicationConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.jade.Application;import com.jade.domian.User;import com.jade.service.UserServiceImpl;@RunWith(SpringJUnit4ClassRunner.class)@SpringApplicationConfiguration(Application.class)/** * 测试 *@author jade *@date 2016年7月14日下午3:18:34 *@version 1.0 */public class testJpa {    @Autowired    UserRepository res;     @Test    public void testGetForJpa(){       List<User> luesr=res.findAll();       for(User user :luesr){           System.out.println(user.getId() + " "+user.getUsername());       }    }}
0 0
原创粉丝点击