在IDEA中利用SpringBoot整合JPA

工具介绍

IDEA
Navicat

一、创建新项目

利用IDEA自带的spring初始化向导来新建一个spring的项目:
在IDEA中利用SpringBoot整合JPA
设置项目名称以及包名:
在IDEA中利用SpringBoot整合JPA
选择SpringBoot的版本以及添加以下依赖:
在IDEA中利用SpringBoot整合JPA
然后一直next即可创建完成。
项目的pom.xml文件中的依赖是这样的:

	<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

新建好的项目结构:
在IDEA中利用SpringBoot整合JPA

二、设置数据源

个人更喜欢使用yml文件作为配置文件,它层次感更强,也更清晰易懂,所以接下来我们就在项目的resource目录下新建文件application.yml,然后再配置数据源的信息(需要注意yml文件中属性的名字和值之间由冒号隔开,冒号后面一定有一个空格):

spring:
  datasource:
  # jpa是数据库的名称
    url: jdbc:mysql://localhost/jpa 
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

三、实体类

创建User的实体类(省略了getter&setter方法):

/**
 * 使用JPA注解配置映射关系
 */
@Entity //告诉JPA这是一个实体类(和数据表映射的类)
@Table(name = "tbl_user") //@Table来指定和哪个数据表对应;如果省略,默认表名就是该类名的小写:user
public class User {
    @Id //表示这个属性是数据表中的主键
    @GeneratedValue(strategy = GenerationType.IDENTITY) //还是一个自增的主键
    private Integer id;
    @Column(name = "last_name",length = 50) //这是和数据表对应的一个列,可以定义其在数据表中的名字及长度
    private String lastName;
    @Column //省略的情况,默认列名就是属性名
    private String email;

使用JPA的一个好处就是,它能够根据实体类自动帮我们创建对应的数据库表,只需简单配置几步即可:
在application.yml文件中增加(jpa 也是spring下的一个属性,所以它也是在spring这个层级下的):

  jpa:
    hibernate:
#     ddl-auto:定义数据表的生成策略。update:更新或者创建数据表结构
      ddl-auto: update
#      控制台显示sql语句
    show-sql: true

之后运行主程序,控制台会报错找不到对应的表,但是这实际上是正常的,去数据库看就可以发现名为tbl_user的表已经创建成功了,而且是根据实体类中的设置创建的。
在IDEA中利用SpringBoot整合JPA

三、持久层接口

JPA中有许多封装好的对数据库进行操作的方法,不需要再写sql语句,而是直接调用其中的方法,就可以完成对数据的操作了。而这时,持久层只需继承JpaRepository类就OK了。

/**
 * 继承JpaRepository来完成对数据库的操作
 * JpaRepository<T,id>,T表示要进行操作的实体类,id表示类的主键的类型
 */
public interface UserRepository extends JpaRepository<User,Integer> {
}

四、控制层

编写控制层代码来测试一下是否成功。因为没有界面,所以这边直接用@RestController注解来返回json串就好了,把持久层接口自动注入进来,直接调用其中对应的方法。

@RestController
public class UserController {

    @Autowired
    UserRepository userRepository;

    @GetMapping("/user/{id}")
    public User getUser(@PathVariable("id") Integer id){
        User user = userRepository.findOne(id);
        return user;
    }

    @GetMapping("/user")
    public User insertUser(User user){
        User save = userRepository.save(user);
        return save;
    }
}

五、页面效果

首先插入一条数据:
地址栏输入 :http://localhost:8080/user?lastName=zhangsan&email=aa
查询:
地址栏输入 :http://localhost:8080/user/1
在IDEA中利用SpringBoot整合JPA