springboot与jpa的结合

之前一直用mybatis处理dao层,之后接触了jpa后,发现jpa自动帮你封装了常用了增删改查操作,用起来比mybatis方便得多,在这里记录下
这里所用springboot是2.1.7版本

一、QuickStart

1、导入jpa的依赖以及数据库驱动的依赖

   <!--加入对jpa的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>

2、配置连接,在application.properties中加入相关数据库驱动的连接

spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=6198611nao
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

我这里的mysql是最新版本的,所以驱动与旧版本的有所不同

3、定义表的实体类,我这里一个user表

package com.xyn.model;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;

@Entity                 //表示实体类
@Table(name = "user")        //对应哪一张表
public class User implements Serializable {
    @Id                //主键。必须有的,否则会报错
    private int id;
    private String username;
    private String password;

    public User() {
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setPa(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public User(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }
}

4、编写dao层,定义一个UserDao接口,继承JpaRepository<T,ID>接口,就可以实现常用的增删改查。


import com.xyn.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface Userdao extends JpaRepository<User, Integer> {

}

5、测试类:

import com.xyn.model.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@SpringBootTest
@RunWith(SpringRunner.class)
public class UserdaoTest {
    @Autowired
   private Userdao dao;
    @Test
    public void save(){
        dao.save(new User(5,"许大虎","2545"));
    }
}

运行结果;
在这里插入图片描述
对应的增删改查的方法还有:
在这里插入图片描述
在这里插入图片描述

二、通过方法名自己定义sql查询

jpa不仅帮你封装了数据库常用的增删改查,还可以自己根据命名规则来定义查询语句,查询语句根据方法名来定义。具体命名规则表如下:

在这里插入图片描述
比如,我们要查询数据库里名字叫"许大虎“的所有信息,此时给出的常用查询方法不能满足我们的需求,我们可以根据自己定义的方法来查询。方法名需要满足一定格式的格式 在这里插入图片描述
测试类:
在这里插入图片描述

注意,我刚开始写方法名时为这个:
在这里插入图片描述
运行之后报错,后面发现方法名后面的字段不是我数据库中的字段,所以报错,因此,当自己需要自定义方法名的时候,字段需要与数据库中的字段名对应

还要很多可以自定义的方法名,具体参照上图表来定义。

三、通过sql语句来查询

当自定义方法名来查询依旧不能满足你的需求的时候,你可以使用sql语句

在这里插入图片描述
测试类:
在这里插入图片描述

四、总结

使用jpa,可以使用它自身提供的增删改查语句,也可以通过命名规则来自己定义查询语句,当然,也可以通过@Query注解自己写sql语句。jpa相对来说扩展性强而简单,使用起来相对方便。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值