Spring Boot 快速上手(三)数据操作

1.Spring Boot中配置JPA

Spring Boot中访问关系型数据库,可以使用Spring Data JPA建立数据访问层,那么先来介绍下相关的必要配置。

① 添加JPA依赖

于Spring Boot项目的pom.xml文件中添加如下依赖:

		
			org.springframework.boot
			spring-boot-starter-data-jpa
		

② 添加数据库驱动依赖

访问数据库的前提是需要先有一个数据库,本文使用MySQL做演示,故添加MySQL的驱动如下:

		
			mysql
			mysql-connector-java
		
此处添加数据库驱动并没有指定版本号,因为版本号已在spring-boot-dependencies中指定。Spring Boot的当前最新版本号是1.5.7.RELEASE,MySQL驱动的版本号是5.1.44。

③ 配置数据源

于application.properties文件中添加数据源配置:

## 数据源配置
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
这里使用的是本地的demo库,后面将在此库中创建数据库表。

④ 配置JPA

于application.properties文件中添加JPA配置:

## JPA配置
spring.jpa.show-sql=true
spring.jackson.serialization.indent_output=true
第一条配置开启控制台中打印sql语句,第二条配置美化输出的json字符串。此外,Spring Boot中默认Hibernate是JPA的实现者。

⑤ 其他配置

application.properties文件中维持如下配置:

# 访问路径
server.context-path=/demo
# 端口号
server.port=8088
那么,当前的访问路径是http://localhost:8088/demo/;如果不希望添加该配置,默认访问路径是http://localhost:8080/。

2.使用JPA操作数据库

① 创建数据库表

于本地MySQL数据库的demo库中创建学生表student,该表包含4个字段:id(学生编号),name(姓名),age(年龄),nat(国籍);建表sql如下:

CREATE TABLE `student` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(100) DEFAULT NULL COMMENT '姓名',
  `age` int(4) DEFAULT NULL COMMENT '年龄',
  `nat` varchar(200) DEFAULT NULL COMMENT '国籍',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表'

② 创建实体类

创建与student数据表字段一致的实体类Student:

package net.xxpsw.demo.springboot.student.entity;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Student {
	@Id
	private Long id;
	private String name;
	private Integer age;
	private String nat;

	public Student() {
		super();
	}
	public Student(Long id, String name, Integer age, String nat) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.nat = nat;
	}

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getNat() {
		return nat;
	}
	public void setNat(String nat) {
		this.nat = nat;
	}
}
其中,@Entity指明该实体类与数据库表相映射,@Id指明该属性映射数据库表的主键。

③ 创建数据访问接口

创建数据访问接口StudentRepository,该接口继承JpaRepository

package net.xxpsw.demo.springboot.student.dao;

import org.springframework.data.jpa.repository.JpaRepository;
import net.xxpsw.demo.springboot.student.entity.Student;

public interface StudentRepository extends JpaRepository {
}
查看JpaRepository的源码,源码结构如下:
@NoRepositoryBean
public interface JpaRepository extends PagingAndSortingRepository, QueryByExampleExecutor {
	List findAll();
	List findAll(Sort sort);
	List findAll(Iterable ids);

	 List save(Iterable entities);
	void flush();
	 S saveAndFlush(S entity);

	void deleteInBatch(Iterable entities);
	void deleteAllInBatch();

	T getOne(ID id);

	@Override
	 List findAll(Example example);
	@Override
	 List findAll(Example example, Sort sort);
}
@NoRepositoryBean指明此接口不是业务使用的接口,从JpaRepository的源码可以看到,该接口继承了PagingAndSortingRepository和Qu

你可能感兴趣的:(Spring,Boot,spring,Spring,Boot,java,数据库,jpa)