pom.xml中添加:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>

如果需要测试,还要添加:

<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>

application.properties中添加:

spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8  #serverTimezone=UTC指定时区,mysql 6.0+版本需要配置这个参数
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.driver-class-name=com.mysql.jdbc.Driver  #可以不加,因为根据url可以判断出数据库类型

添加entity类:

@Entity
@DynamicInsert(true)  // true 是默认值,写不写一样  
@DynamicUpdate(true)  // true 是默认值,写不写一样  
public class Student {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer id;
	@Column
	private String name;
	@Column
	private Integer age;
	public Integer getId() {
		return id;
	}
	public void setId(Integer 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;
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
}

添加dao类:

public interface StudentRepository extends JpaRepository<Student, Integer>{

}

添加测试类:

@RunWith(SpringRunner.class)
@SpringBootTest
public class StudentDaoTest {
@Autowired
private StudentRepository StudentRepository;

@Test
public void query() {
	List<Sort.Order> orders = new ArrayList<>();
	orders.add(new Sort.Order(Sort.Direction.ASC, "name")); // 根据name排序
    Sort sort = Sort.by(orders);
    
	Page<Student> page = StudentRepository.findAll(PageRequest.of(1,5,sort));
	Stream<Student> stream = page.get();
	for (Student student : page) {
		System.out.println(student);
	}

}

@Test
public void now() {
	List<Sort.Order> orders = new ArrayList<>();
	orders.add(new Sort.Order(Sort.Direction.ASC, "name")); // 根据name排序
    Sort sort = Sort.by(orders);
    
	Page<Student> page = StudentRepository.findAll(PageRequest.of(1,5,sort));
	Stream<Student> stream = page.get();
	for (Student student : page) {
		System.out.println(student);
	}
}

@Test
public void old() {
	List<Sort.Order> orders = new ArrayList<>();
	orders.add(new Sort.Order(Sort.Direction.ASC, "name")); // 根据name排序
    Sort sort = new Sort(orders);     
    
	Page<Student> page = StudentRepository.findAll(new PageRequest(1, 5,sort));
	Stream<Student> stream = page.get();
	for (Student student : page) {
		System.out.println(student);
	}
}

}

启动,会自动创建表,然后手动插入sql语句:

INSERT INTO `student` (`id`, `age`, `name`) VALUES ('1', '20', 'lisi');
INSERT INTO `student` (`id`, `age`, `name`) VALUES ('4', '40', 'maliu');
INSERT INTO `student` (`id`, `age`, `name`) VALUES ('3', '30', 'wangwu');
INSERT INTO `student` (`id`, `age`, `name`) VALUES ('5', '50', 'maliu');
INSERT INTO `student` (`id`, `age`, `name`) VALUES ('6', '60', 'rose');
INSERT INTO `student` (`id`, `age`, `name`) VALUES ('7', '58', 'jack');
INSERT INTO `student` (`id`, `age`, `name`) VALUES ('8', '46', 'guanyu');
INSERT INTO `student` (`id`, `age`, `name`) VALUES ('9', '26', 'zhangfei');
INSERT INTO `student` (`id`, `age`, `name`) VALUES ('10', '34', 'zhaoyun');
INSERT INTO `student` (`id`, `age`, `name`) VALUES ('11', '30', 'machao');
INSERT INTO `student` (`id`, `age`, `name`) VALUES ('12', '38', 'huangzhong');
INSERT INTO `student` (`id`, `age`, `name`) VALUES ('13', '78', 'caocao');

再次执行测试,发现可以查到结果了。

如果要打印sql:

spring.jpa.show-sql=true  #是否打印sql,默认是false
spring.jpa.properties.hibernate.format_sql=true  #是否格式化sql语句,默认是false

设置自动生成:

spring.jpa.hibernate.ddl-auto=update #没有表创建表,新增列创建列

更多数据库链接选项在DataSourceProperties类中,官网地址:
https://github.com/spring-projects/spring-boot/blob/v2.2.1.RELEASE/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceProperties.java
spring.jpa.open-in-view=true的作用是:
hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层,当 Web 层访问到那些需要延迟加载的数据时,由于加载领域对象的 Hibernate Session 已经关闭,这些导致延迟加载数据的访问异常。