文章目录
本章包括:
- 使用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();