JPA快速入门

87 阅读1分钟
引入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
配置
spring.datasource.url = jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai
spring.datasource.username = root
spring.datasource.password = ccc+022599
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
    
spring.jpa.generate-ddl=false
spring.jpa.show-sql = true
编写实体类
@Slf4j
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "user")
public class User implements Serializable {  
    @Id  // 该字段是主键
    @GeneratedValue(strategy = GenerationType.AUTO)  // 主键自增 
    @Column(name = "id")   // 对应列名,属性名和列名一样可以不用加该注解
    private Long id;

    @Column(name = "name")
    private String name;
    
    @Column(name = "password")
    private String password;
}
编写dao
/**
 * JPQL方式查询:表名改为类名,字段名改为属性名,搭配注解`@Query`进行使用,更新操作必须加上@Modifying@Transactional
 */
@Repository  // User对应需要映射的实体类, Long对应实体类中主键类型
public interface UserDao extends JpaRepository<User, Long>{
    
    @Transactional
    @Modifying
    @Query("update User u set u.name=?1 where u.id=?2")
    void update(String username,Long id);

    @Query(value = "select u from User u where u.name like %?1%")
    Page<IUser> testPage(String name, Pageable page);
}
增删改查
@SpringBootTest
@Slf4j
public class JPATest {

    @Autowired
    IUserDao userDao;
    
    // 更新
    @Test
    void update(){
        userDao.update("哈哈哈哈", 12L);
    }
    
    // 排序
    @Test
    void testSort(){
        Sort sort = Sort.by(Sort.Order.desc("id"), Sort.Order.asc("name"));
        List<User> all = userDao.findAll(sort);
    }
    
    // 分页
    @Test
    void testPage() {
        Page<IUser> page = userDao.testPage("哈哈哈", PageRequest.of(0, 4));
    }
}
相关文章

juejin.cn/post/684490…

juejin.cn/post/719502…

juejin.cn/post/684490…