在线商城项目开发笔记(1)--- javax.persistence 的注解配置实践(实体类,DAO,服务层)
最近想将之前学的springboot框架及相关知识赋予实践,于是便开了这个自学笔记,将开发过程中的知识点总结规整,以便日后参考。
1.实体类用于映射:
import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @Entity //通过@Entity注解将一个类声明为一个实体bean @Table(name = "category") //@Table注解可以为实体bean映射指定表,name属性表示实体所对应表的名称,如果没有定义 ,那么系统自动使用默认值:实体的类名(不带包名) @JsonIgnoreProperties({ "handler","hibernateLazyInitializer" }) //因为是前后端分离,所以传输使用的是Json格式,如果jpa来做实体类的持久化,jpa 默认会使用 hibernate,所以我们要忽视掉着两个无须 json 化的属性。 public class Category { @Id //用于标记属性的主键 @GeneratedValue(strategy = GenerationType.IDENTITY) //表示主键是自动生成策略,一般该注释和 @Id一起使用,这里用IDENTITY,具体区别可以看资料(3) @Column(name = "id") //声明数据库字段和类属性对应关系 int id; //对应数据库里的主键id String name;//对应分类名 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
2.DAO:
import carl.tmall.pojo.Category; import org.springframework.data.jpa.repository.JpaRepository; public interface CategoryDAO extends JpaRepository<Category,Integer> { //第一个参是要映射的类名,第二个是主键类型,我们是int,但是这里写Integer(自动拆装) }
CategoryDAO 类集成了 JpaRepository,提供CRUD和分页的各种常见功能。
3.服务层
import carl.tmall.dao.CategoryDAO; import carl.tmall.pojo.Category; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import java.util.List; @Service //标记为service层 public class CategoryService { @Autowired CategoryDAO categoryDAO; //自动装配CategoryDAO对象 public List<Category> list(){ Sort sort = new Sort(Sort.Direction.ASC,"id"); //以升序来排表,然后通过categoryDAO进行查询。 return categoryDAO.findAll(sort); } }
参考资料:
1.https://spring.io/blog/2011/02/10/getting-started-with-spring-data-jpa/ 官方教程,很详细!
2.https://www.cnblogs.com/zjdxr-up/p/9737433.html JPA浅谈
3.https://www.objectdb.com/java/jpa/entity/generated#The_Auto_Strategy 不同策略