《玩转SpringBoot全家桶》总结——第15-21节
第十五节:认识SpringData JPA
JPA(Java Persistence API),为对象关系映射提供了一种基于POJO的持久化模型。
- a. 简化数据持久化代码的开发工作
- b. 为Java社区屏蔽不同持久化API的差异。
第十六节:定义JPA的实体对象
常用JPA注解
实体:
- @Entity,@MappedSuperclass
- @Table(name)
主键:
- @Id
- @GeneratedValue(strategy, generator)
- SequenceGenerator(name, sequenceName)
映射: - @Column(name,nullable,length,insertable,updatable)
- @JoinTable(name)、@JoinColumn(name)
关系: - @@OneToOne、@OneToMany、@ManyToOne、@ManyToMany
- @OrderBy
第十七节:线上咖啡馆实战项目:SpringBucks
对于金额的处理,不要使用浮点数。
使用到的注解:
- @MappedSupperclass,在Jpa里, 当我们在定义多个实体类时, 可能会遇到这几个实体类都有几个共同的属性, 这时就会出现很多重复代码.
这时我们可以选择编写一个父类,将这些共同属性放到这个父类中, 并且在父类上加上@MappedSuperclass注解.注意:标注为@MappedSuperclass的类将不是一个完整的实体类,他将不会映射到数据库表,但是他的属性都将映射到其子类的数据库字段中。
标注为@MappedSuperclass的类不能再标注@Entity。 - @Data注解 :lombok.jar包下边的注解,通常用在实体bean上,使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去。
- @AllArgsConstructor
使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数 - @NoArgsConstructor
使用后创建一个无参构造函数 - @Builder
关于Builder较为复杂一些,Builder的作用之一是为了解决在某个类有很多构造函数的情况,也省去写很多构造函数的麻烦,在设计模式中的思想是:用一个内部类去实例化一个对象,避免一个类出现过多构造函数。
第十八-十九节:通过Spring Data JPA相关内容
如果是比较简单的应用,JPA就挺方便的,如果是比较复杂的应用,写HQL和写SQL都差不多了,或者DBA对SQL有什么特殊的要求,那还是推荐用MyBatis。
Spring Data JPA的Repository是怎么从接口变成Bean的:
JpaRepositoriesRegistrar:
- **了@EnableJpaRepositories
- 返回了JpaRepositoryConfigExtension
RepositoryBeanDefinitionRegistrarSupport.registerBeanDefinitions - 注册RepositoryBean(类型是JpaRepositoryFactoryBean)
RepositoryConfigurationExtensionSupport.getRepositoryConfigurations - 取得Repository配置
JpaRepositoryFactory.getTargetRepository - 创建了Repository
接口中的方法怎么被解释的:
RepositoryFactorySupport.getRepository添加了Advice。 - DefaultMethodInvokingMethodInterceptor
- QueryExecutorMethodInterceptor
AbstractJpaQuery.execute执行具体的查询,语法解析在Part中。
第二十节:通过MyBatis操作数据库
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
示例代码:
第二十一节:让MyBatis更好用的那些工具:MyBatis Generator
MyBatis Generator([http://www.mybatis.org/generator/](http://www.mybatis.org/generator/)
)
它是Mybaits代码生成器,能够根据数据库表生成相关代码,如:
- POJO
- Mapper接口
- SQL Map XML
配置MyBatis Genetator
使用生成的对象:
工具的使用还可以参考改链接:https://www.cnblogs.com/zf15193741987/p/13161340.html