springboot对jpa的支持

本文详细介绍SpringBoot与JPA的整合过程,包括Maven依赖配置、YAML文件设置、实体类与服务接口定义,以及常见查询方法使用,助力快速上手SpringBoot项目中的数据持久化操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、JPA的介绍

JPA(Java Persistence API):JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

2、springboot与JPA整合

(1)pom导入Maven依赖

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

(2)application.yml 对JPA配置

spring:
  jpa:
    hibernate:
      ddl-auto: update
      show-sql: true

(3)application.yml对数据库连接配置

 datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_0713?useUnicode=true&characterEncoding=utf8
    username: root
    password: 123

3、创建测试实体类和测试方法

(1)创建实体类Book类

@Entity
@Table(name = "t_springboot_book")
public class Book {
    @Id
    @GeneratedValue
    private Integer bid;
    @Column(length = 100)
    private String bname;
    @Column
    private float price;

    public Integer getBid() {
        return bid;
    }

    public void setBid(Integer bid) {
        this.bid = bid;
    }

    public String getBname() {
        return bname;
    }

    public void setBname(String bname) {
        this.bname = bname;
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }

    public Book(){

    }
    public  Book(Integer bid,String bname,float price){
        bid = this.bid;
        bname = this.bname;
        price = this.price;
    }
}

(2)定义接口BookService ,继承JpaRepository和JpaSpecificationExecutor(调整单个查询)

①JpaRepository<实体类,实体类主键>
②JpaSpecificationExecutor<实体类>

public interface BookDao extends JpaRepository<Book,Integer>, JpaSpecificationExecutor<Book> {
}

(3)定义接口,实现基本增删改方法

public interface BookService {
	//增加/修改
    public Book save(Book book);
   //删除单个
    public void deleteById(Integer bid);
	//展示所有
    public List<Book> list(Book book);
	//####查询单个
    public Book getOne(Integer bid);

}

(4)实现接口BookService ,继承对应方法

@Service
public class BookServiceImpl implements BookService {
    @Autowired
    private BookDao bookDao;

    @Override
    public Book save(Book book) {
        return this.bookDao.save(book);
    }

    @Override
    public void deleteById(Integer id) {
        this.bookDao.deleteById(id);
    }

	//########################################
    @Override
    public List<Book> list(Book book) {
        return this.bookDao.findAll(new Specification<Book>() {
            @Override
            public Predicate toPredicate(Root<Book> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                Predicate predicate = criteriaBuilder.conjunction();
                if(book != null){
                    if (null != book.getBname() && "".equals(book.getBname())) {
                        predicate.getExpressions().add(criteriaBuilder.like(root.get("bname"),"%"+book.getBname()+"%"));
                    }
                }
                return predicate ;
            }
        });
    }

	//################findById()懒加载,不能直接实现功能
    @Override
    public Book getOne(Integer bid) {
        return bookDao.findById(bid).get();
    }
}

(4)启动Application

在这里插入图片描述
(5)执行结果:
console面板输出sql语句;查看数据库,能看到表已经被创建

4. Spring JpaRepository其他查询方式

除了以上基础的CRUD操作外,有时候我们需要根据需要调用不同的方法,这个时候我们可以利用Repository接口的帮助

①关于Spring JpaRepository的基本介绍
https://www.cnblogs.com/mr-wuxiansheng/p/6189383.html
②关于@Ruery注释的用法:
http://www.cnblogs.com/zj0208/p/6008627.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值