導入相關pom依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
application.yml文件配置
spring:
jpa:
hibernate:
ddl-auto: update
show-sql: true
自動建表相關代碼
@Entity
@Table(name = "t_springbootjpa_book")
public class Book {
@Id
@GeneratedValue
private Integer bid;
@Column(length = 100)
private String bname;
@Column
private Float price;
jpa值增刪改查
* 只要繼承JpaRepository,通常所用的增刪查改方法都有
* 第一個參數:操作的實體類
* 第二個參數:實體類對應數據表的主鍵
*/
public interface JpaDao extends JpaRepository<Book, Integer> {
}
controller層
@Autowired
private JpaDao jpaDao;
@RequestMapping("/add")
public String add(Book book){
jpaDao.save(book);
return "success";
}
@RequestMapping("/edit")
public String edit(Book book){
jpaDao.save(book);
return "success";
}
@RequestMapping("/del")
public String del(Book book){
jpaDao.delete(book);
return "success";
}
@RequestMapping("/getOne")
public Book getOne(Integer bid){
// 會出現懶加載問題:org.hibernate.LazyInitializationException: could not initialize proxy - no Session
// return jpaDao.getOne(bid);
return jpaDao.findById(bid).get();
}
@RequestMapping("/getAll")
public List<Book> getAll(){
return jpaDao.findAll();
}
瀏覽器輸入請求進行測試
http://localhost:8080/springboot/jpa/getOne?bid=8
http://localhost:8080/springboot/jpa/getAll
http://localhost:8080/springboot/jpa/add?bname=哈哈ha&price=99
http://localhost:8080/springboot/jpa/add?bname=嗯哼&price=12&bid=11
http://localhost:8080/springboot/jpa/del?bid=11
jpa值複雜查詢
dao層
* 要使用高級查詢必須繼承
* org.springframework.data.jpa.repository.JpaSpecificationExecutor<T>接口
*/
public interface JpaDao extends JpaRepository<Book, Integer>, JpaSpecificationExecutor<Book> {
}
controller層
@RequestMapping("/getCondition")
public List<Book> getCondition(Book book){
return jpaDao.findAll(new Specification<Book>() {
@Override
public Predicate toPredicate(Root<Book> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
Predicate predicate = criteriaBuilder.conjunction();
if(book != null){
if(null != book.getBname() && !"".equals(book.getBname())){
predicate.getExpressions().add(criteriaBuilder.like(root.get("bname"),"%"+book.getBname()+"%"));
}
}
return predicate;
}
});
}