3.处理数据 - spring实战第五版


本章包括:

  • 使用spring的JdbcTemplate;
  • 用SimpleJdbcTemplate插入数据;
  • 用spring data 声明JPA repositories.

2. Spring Data

Spring Data工程包括以下几个工程:

  • spring data JPA,这是针对关系型数据库;
  • spring data MongoDB,这是针对Mongo文档数据库;
  • spring data Neo4j, 这是针对Neo4j图形数据库;
  • spring data Cassandra, 这是针对Cassandra数据库。

2.1 添加spring data JPA到工程

添加以下依赖:

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

默认是实现是Hibernate,如果需要改成其他的实现,可以如以下:

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-data-jpa</artifactId>
		<exclusions>
			<exclusion>
				<artifactId>hibernate-entitymanager</artifactId>
				<groupId>org.hibernate</groupId>
			</exclusion>
		</exclusions>
	</dependency>
	<dependency>
		<groupId>org.eclipse.persistence</groupId>
		<artifactId>eclipselink</artifactId>
		<version>2.5.2</version>
	</dependency>

2.2 声明entities

package tacos;
import javax.persistence.Entity;
import javax.persistence.Id;
import lombok.AccessLevel;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;

@Data
@RequiredArgsConstructor
@NoArgsConstructor(access=AccessLevel.PRIVATE, force=true)
@Entity
public class Ingredient {
  
  @Id
  private final String id;
  private final String name;
  private final Type type;
  
  public static enum Type {
    WRAP, PROTEIN, VEGGIES, CHEESE, SAUCE
  }

}

添加@Entity和@Id。
注解@NoArgsConstructor,JPA要求一个无参构造方法,因为不想用次方法,所以设置为private。

2.3 声明JPA repositories

继承CrudRepository即可。

package tacos.data;

import org.springframework.data.repository.CrudRepository;

import tacos.Ingredient;

public interface IngredientRepository extends CrudRepository<Ingredient, String> {

}

2.4 定制JPA repositories

例子:

List<Order> findByDeliveryZip(String deliveryZip);

spring data使用domain-specific language (DSL)机制来解析方法签名。

List<Order> readOrdersByDeliveryZipAndPlacedAtBetween(
String deliveryZip, Date startDate, Date endDate);

在这里插入图片描述
还有以下的例子:
在这里插入图片描述
在这里插入图片描述
复杂的可以用@Query :

@Query("Order o where o.deliveryCity='Seattle'")
List<Order> readOrdersDeliveredInSeattle();
发布了97 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_39530821/article/details/103788788