springboot之jpa支持

導入相關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;
            }
        });
    }

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章