SpringBoot集成JPA的示例代码

时间:2021-11-07 18:13:01

本文介绍了springboot集成jpa的示例代码,分享给大家,具体如下:

1.创建新的maven项目

SpringBoot集成JPA的示例代码

2. 添加必须的依赖

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!--springboot的必须依赖-->
<parent>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-parent</artifactid>
  <version>1.5.9.release</version>
</parent>
 
<dependencies>
  <!--启动springmvc的相关配置,springboot的自动配置-->
  <dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-web</artifactid>
  </dependency>
  <!--jpa-->
  <dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-data-jpa</artifactid>
  </dependency>
  <!--mysql驱动-->
  <dependency>
    <groupid>mysql</groupid>
    <artifactid>mysql-connector-java</artifactid>
  </dependency>
</dependencies>

3. 新建springboot启动类

?
1
2
3
4
5
6
7
8
9
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
 
@springbootapplication
public class application {
  public static void main(string[] args) {
    springapplication.run(application.class,args);
  }
}

4. 在resources跟目录下新建application.properties

?
1
2
3
4
5
6
7
8
#建立/更新数据表的配置
spring.jpa.hibernate.ddl-auto=update
#数据库地址
spring.datasource.url=jdbc:mysql://localhost:3306/qian?useunicode=true&characterencoding=utf-8
#数据库用户名
spring.datasource.username=root
#数据库密码
spring.datasource.password=123
  1. update:hibernate根据给定的entity结构改变数据库。
  2. create: 每次都会创建数据库,关闭时不会删除
  3. none: mysql的默认设置 , 不改变数据结构
  4. create-drop: 创建数据库,但是每次sessionfactory关闭后都会删除

5. 新建实体类user

这个时候其实已经可以启动springboot, 但是不会生成数据表,因为还没有配置实体类的jpa

SpringBoot集成JPA的示例代码

先新建user.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import org.hibernate.annotations.genericgenerator;
import javax.persistence.entity;
import javax.persistence.generatedvalue;
import javax.persistence.id;
/**
 * created by andy on 2018/1/20.
 */
//表明这是个需要生成数据表的类
@entity
public class user {
//  定义主键id
  @id
//  声明一个策略通用生成器,name为”system-uuid”,策略strategy为”uuid”。
  @genericgenerator(name = "system-uuid", strategy ="uuid")
//  用generator属性指定要使用的策略生成器。
  @generatedvalue(generator = "system-uuid")
  private string id;
  private string name;
  private integer age;
  private boolean sex;
 
  public string getid() {
    return id;
  }
 
  public void setid(string id) {
    this.id = id;
  }
 
  public string getname() {
    return name;
  }
 
  public void setname(string name) {
    this.name = name;
  }
 
  public integer getage() {
    return age;
  }
 
  public void setage(integer age) {
    this.age = age;
  }
 
  public boolean getsex() {
    return sex;
  }
 
  public void setsex(boolean sex) {
    this.sex = sex;
  }
}

这时候启动项目,就会在指定位置下生成一个user数据表

SpringBoot集成JPA的示例代码

6. 实现crud

crudrepository是一个提供了普通增删改查方法的接口,由spring内部提供,我们只需调用即可

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@norepositorybean
public interface crudrepository<t, id extends serializable> extends repository<t, id> {
  <s extends t> s save(s var1);
  <s extends t> iterable<s> save(iterable<s> var1);
  t findone(id var1);
  boolean exists(id var1);
  iterable<t> findall();
  iterable<t> findall(iterable<id> var1);
  long count();
  void delete(id var1);
  void delete(t var1);
  void delete(iterable<? extends t> var1);
  void deleteall();
}

新建userrepository.java

?
1
2
3
public interface userrepository extends crudrepository<user, string> {
 
}

7. 实现controller控制

新建usercontroller.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@restcontroller
public class usercontroller {
  @autowired
  private userrepository userrepository;
 
  @requestmapping("/add")
  public user add(string name){
    user user = new user();
    user.setname(name);
    return userrepository.save(user);
  }
 
  @requestmapping("/list")
  public iterable<user> list(){
    iterable<user> all = userrepository.findall();
    return all;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://my.oschina.net/u/3490860/blog/1610121