1:依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
1:yml配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql:///java?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
username: root
password: root
jpa:
database: mysql #指定数据库类型
show-sql: true #显示sql预计
hibernate: #自动生成表和更改表字段
ddl-auto: update
2:pojo对象
package com.example.demojpa.pojo;
import lombok.Data;
import javax.persistence.*;
@Data
@Entity
@Table(name="t_user") //指定表名
public class User {
@Id
@GeneratedValue //标识主键
private Long id; //@Column(name="对应字段名")
private String name;
private Integer age;
private String userName;
private String password;
}
3:dao层
package com.example.demojpa.dao;
import com.example.demojpa.pojo.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserDao extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> { //返回类型,参数类型.泛型作用
//JpaRepository基本增删改查JpaSpecificationExecutor分页方法接口
}
4:基本增删改查
package com.example.demojpa;
import com.example.demojpa.dao.UserDao;
import com.example.demojpa.pojo.User;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Optional;
@Slf4j
@SpringBootTest
class DemoJpaApplicationTests {
@Autowired
private UserDao userDao;
@Test//增
void insert() {
User user = new User();
user.setName("小明");
user.setAge(18);
user.setUserName("admin");
user.setPassword("123456");
User save = userDao.save(user);
log.error(save.toString());
}
@Test//删
void delete() {
User user = new User();
user.setId(1L);
userDao.delete(user);
}
@Test//改
void update() {//先查后改
Optional<User> byId = userDao.findById(4L);
User user = null;
if (!byId.isPresent()) { //是否存在对象,
return;
}
log.error(user.toString());
user = byId.get();
user.setName("小王");
user.setAge(30);
user.setUserName("天王盖地虎");
//内部实际调用的update()方法,根据id进行更新字段
User save = userDao.save(user);
log.error(save.toString());
}
@Test//查
void find() {
Optional<User> byId = userDao.findById(2L);
if (byId.isPresent()) {//先判断是否存在..byId.get()执行此方法时,需先执行byId.isPresent()
log.error(byId.get().toString());
}else {
log.error("没有查到");
}
}
@Test
void test1(){//分页查询,需要继承接口,上面已接口已继承
PageRequest pageRequest = PageRequest.of(0,10); //0,10从0开始查10页,如果参数一为1则1*10=10,从10开始查
Page<User> all = userDao.findAll(pageRequest);
List<User> list = all.getContent();
for (User user : list) {
log.error(user.toString());
}
}
}