SpringBoot05-JPA

x33g5p2x  于2021-03-14 发布在 其他  
字(1.6k)|赞(0)|评价(0)|浏览(452)

作为一款几乎完美的数据层封装框架,Spring Data同样(也一定)是会被使用到Spring Boot 中的。
Spring Boot的JPA默认是用Hibernate来实现。

去掉依赖

去掉pom.xml中的spring-boot-starter-jdbc的依赖

添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

配置文件

#jpa
spring.jpa.database=MYSQL
spring.jpa.show-sql=true

#hibernate
spring.jpa.hibernate.ddl-auto=update

定义实体

@Entity
@Table(name="user")
public class User implements Serializable{

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private long id;
	
	private String name;
	
	@JsonFormat(pattern="yyyy年MM月dd日")
	@Column(name = "birthday")
	private Date birthDay;
	
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
	@Column(name="createtime")
	private Date registerDate;
	
	get/set ...
	
}

继承一个通用接口

@Repository
public interface UserRepository extends JpaRepository<User, Long>{

}

注入

@Autowired
private UserRepository userRepository;

使用已有的实现

@Override
public List<User> queryAll() {
//	List<User> list = userDao.queryAll();
	List<User> list = userRepository.findAll();
	return list;
}

@Override
@Transactional
public long save(User user) {
	// 参数校验
	Assert.notNull(user,"用户不能为空");
	Assert.isTrue(user.getId() == 0, "用户id非法,必须为0");
	Assert.hasLength(user.getName(), "用户名称不能为空");
	Assert.notNull(user.getBirthDay(),"用户生日不能为空");
	Assert.notNull(user.getRegisterDate(),"用户注册时间不能为空");
	// 新增
	//long pk = userDao.save(user);
	// 打印主键
	
	// 造成异常
	//double result = 1 / 0;
	
	User afterUser = userRepository.save(user);
	long pk = afterUser.getId();
	System.out.println(pk);
	return pk;
	
}

Spring Data就是这么简单。当然,你也可以根据自己的需要来定制。

相关文章