Bootstrap

新建Spring boot项目

搭建Spring Boot 项目,依赖选择JPA(spring-boot-starter-data-jpa)和Web(spring-boot-starter-web)

Maven中心库没有Oracle JDBC的驱动下载,因此我们需要通过Maven命令,自己打包Oracle的JDBC驱动到本地库。

通过在控制台执行下面命令,将ojdbc6.jar安装到本地库:

mvn install:install-file -DgroupId=com.oracle "-DartifactId=ojdbc6"

"-Dversion=11.2.0.2.0" "-Dpackaging=jar" "-Dfile=E:\ojdbc6.jar"

在pom.xml文件中添加:

<dependency>

<groupId>com.oracle</groupId>

<artifactId>ojdbc6</artifactId>

<version>11.2.0.2.0</version>

</dependency>

添加google guava依赖,它包含大量java常用的工具类:

<dependency>

<groupId>com.google.guava</groupId>

<artifactId>guava</artifactId>

<version>18.0</version>

</dependency>


配置基本属性

在application.properties里配置数据源和jpa的相关属性。

spring.datasource.driverClassName=orcale.jdbc.oracleDriver

spring.datasource.url=jdbc\:oracle\:thin\:@localhost\:1521\:数据库名

spring.datasource.username=root

spring.datasource.password=root

spring.jpa.hibernate.ddl-auto=update

spring.jpa.show-sql=true

spring.jackson.serialization.indent-output=true//让控制台输出的json字符串格式更美观

定义映射实体类

@Entity//表示这是一个和数据库表映射的实体类

@NamedQuery(name="Person.withNameAndAddressNamedQuery",query="select p from Person p where p.name=?1 and address=?2")

public class Person{

@Id//表示属性映射为数据库的主键

@GeneratedValue//默认使用主键生成方式为自增

private Long id;

private String name;

private Integer age;

private String address;

}

使用@Entity采用正向工程通过实体类生成表结构,而不是通过逆向工程从表结构生成数据库(@Table(实体类映射表名),@Column(属性映射字段名))。

定义数据访问接口

public interface PersonRepository extends JpaRepository<Person,Long>{

List<Person> findByAddress(String address);

List<Person> findByNameAndAddress(String name,String address);

//使用@Query查询

@Query("select p from Person p where p.name=:name and p.address=:address")

Person withNameAndAddressQuery(@Param("name") String name,@Param("address") String address);

//使用@NameQuery查询

List<Person> withNameAndAddressNameQuery(String name,String address);

}

运行:将PersonRepository注入到控制器中。

@RestController

public class DataController{

//spring Data JPA已自动注册bean,所有可自动注入

@Autowired

PersonRepository personRepository;

//添加方法

}

;