Spring Boot-2.1.0集成JPA(四)

Spring DAata JPA的优势
开发中对数据库的操作大多为增删改查,开发者重复大量且枯燥的代码来实现这部分逻辑 
Spring-data-jpa**使数据访问层变成只是一层接口的编写方式。** 
Spring-data-jpa 只需要一个继承了JpaRepository的接口就能实现数据的访问

1.首先导入依赖

<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.38</version>
        </dependency>


<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.18</version>
        </dependency>

2.编写application.yml配置文件

我没有使用c3p0和druid

#数据库连接配置
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/db_a?useUnicode=true&characterEncoding=UTF-8
    username: root

#  Spring-data-jpa依赖于Hibernate
    #spring.jpa.properties.hibernate.hbm2ddl.auto是hibernate的配置属性
    #主要作用是:自动创建、更新、验证数据库表结构
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

 Spring-data-jpa依赖于Hibernate 
spring.jpa.properties.hibernate.hbm2ddl.auto是hibernate的配置属性 
主要作用是:自动创建、更新、验证数据库表结构 
参数配置介绍: 
- create 
每次加载hibernate时都会删除上一次的生成的表, 
然后根据model类重新生成表,哪怕没有改变, 
这是导致数据库表数据丢失的一个重要原因。 
- create-drop 
每次加载hibernate时根据model类生成表,但sessionFactory关闭时,表自动删除。 
- update(最常用) 
首次加载hibernate时根据model类自动建立起表结构(要先建立数据库) 
以后加载hibernate时根据model类自动更新表结构,即使表结构变了,老数据不删除。 
注意:当部署到服务器后,表结构不会立即建立起来,应用首次运行后才会建立表结构。 
- validate 
每次加载hibernate时,验证创建数据库表结构,和数据库表比较,不创建新表,会插入新值。

3.创建实体类

@Data
@Entity
@Table(name = "T_USER")
public class User implements Serializable {
    @Id
    @GeneratedValue
    private Integer userId;
    @Column(name = "user_name",nullable = false)
    private String userName;
    @Column(name = "user_password",nullable = false)
    private String userPassword;

    public User(Integer userId, String userName, String userPassword) {
        this.userId = userId;
        this.userName = userName;
        this.userPassword = userPassword;
    }
    public User(String userName, String userPassword) {
        this.userName = userName;
        this.userPassword = userPassword;
    }
    public User() {
    }



    @Override
    public String toString() {
        return "User{" +
                "userId=" + userId +
                ", userName='" + userName + '\'' +
                ", userPassword='" + userPassword + '\'' +
                '}';
    }
}

@Data注解是 lombok 依赖包下的注解,它可以自动帮我们生成set/getter方法,简化代码量。有兴趣的可以详细了解,这里不做多解释。

其他的注解都是引用

javax.persistence

不要引用错了,引用错了会在启动时报一个 BeanCreationException的错误

4.编写Dao接口

4.1.一般的,对于数据访问层,需要创建一个接口来规定对数据操作的一系列方法,再创建DAO来实现此接口, 
从而实现对数据库的访问.


4.2.Spring-data-jpa,对数据访问,只需继承Spring-data-jpa提供的接口(这里以JpaRepository为例) 
即可完成对数据的访问

public interface UserDao extends JpaRepository<User,Integer> {
    @Query("from User")
    List<User> findUser();
}

以上即可实现数据库的访问,无需再写实现类

JpaRepository接口实现的数据库操作方法

JpaRepository<对象,主键所使用的数据类型>

5.编写Controller类

@Controller
public class UserController {

    @Resource
    private UserDao userDao;
    @RequestMapping("/getUser")
    public ModelAndView getUser(){

        ModelAndView mv = new ModelAndView();
        mv.addObject("user",userDao.findUser());
        mv.setViewName("index");
        return mv;
    }
}

即可跑程序运行,如果大家还是习惯写service类的话,也可以去创建的,操作都跟集成mybatis是一样的

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值