007、spring boot jpa

一、Jpa

Spring Boot 要使用 Jpa ,需要

1. 引入jpa依赖

2. 在主类 Application.java 注解 @EnableJpaRepositories

3. 继承 Repository<T, ID> 接口,该接口有3个常用子接口

  • CrudRepository<T, ID>
  • PagingAndSortingRepository<T, ID>
  • JpaRepository<T, ID>

  可使用常用的方法,如

<S extends T> S save(S entity);

<S extends T> Iterable<S> saveAll(Iterable<S> entities);

Optional<T> findById(ID id);

Iterable<T> findAll();

Iterable<T> findAllById(Iterable<ID> ids);

long count();

void deleteById(ID id);

4. 自定义查询方法

根据方法名定义查询,关键字

  • find...By... / read...By... / query...By... / get...By...
  • count...By...
  • ...OrderBy...[XxAsc/XxDesc]
  • And / Or / IgnoreCase
  • Top[n] / First / Distinct

 

二、使用Spring Boot Jpa

1. 引入 jpa依赖

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

2. 开启数据库日志

# application.properties
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true

logging.level.org.hibernate.type.descriptor.sql.BasicBinder=trace

3. 实体

package com.example.springbootjpa;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;

import lombok.Data;
import lombok.experimental.Accessors;

@Entity
@Table(name = "customer")
@Accessors(chain = true)
@Data
public class Customer {
	
	@Id
	@GeneratedValue
	private Integer id;
	
	@Column(nullable = false)
	private String name;
	
	@Column(updatable = false)
	@CreationTimestamp
	private Date createTime;
	
	@UpdateTimestamp
	private Date updateTime;

}

4. JpaRepository

package com.example.springbootjpa;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;

public interface CustomerRepository extends JpaRepository<Customer, Integer>{
	
	public Customer findFirstByName(String name);
	
	public List<Customer> findTop3ByOrderByIdDescNameAsc();

}

5. 调用

Application.java 主类 使用 @EnableJpaRepositories 注解

        Customer c1 = new Customer().setName("zhangsan").setCreateTime(new Date());
		Customer c2 = new Customer().setName("lisi").setCreateTime(new Date());

		customerRepository.save(c1);
		customerRepository.save(c2);

		log.info("customer count: {}", customerRepository.count());
		log.info("customers: {}", customerRepository.findAll());


        Optional<Customer> findOne = customerRepository.findOne(Example.of(new Customer().setName("lisi"),
				ExampleMatcher.matching().withMatcher("name", GenericPropertyMatchers.exact())));
		if (findOne.isPresent()) {
			log.info("findOne: {}", findOne.get());
		}
		
		Customer findFirstByName = customerRepository.findFirstByName("lisi");
		log.info("findFirstByName: {}", findFirstByName);
		
		List<Customer> findTop3ByOrderByIdDescNameAsc = customerRepository.findTop3ByOrderByIdDescNameAsc();
		log.info("findTop3ByOrderByIdDescNameAsc: {}", findTop3ByOrderByIdDescNameAsc);

 

源码

Fork me on Gitee

转载于:https://my.oschina.net/tita/blog/3058576

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值