搭建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;
//添加方法
}