使用数据
-
JDBC
:Java Database Connectivity
-
JPA
:Java Persistence API
使用JDBC读取和写入数据
-
JdbcTemplate
- 简化对关系型数据库执行SQL操作的步骤,比如不用手动连接、关闭清理、异常捕捉等操作
- 常用方法
query()
queryForObject()
update()
-
@Repository
:添加注解后,Spring``组件扫描
将会自动发现,并初始化为Spring上下文
中的bean
。同样的注解还有@Controller
、@Component
等 @AutoWired
- 定义模式与预加载数据
-
Spring Boot
会在应用启动时自动加载src/main/resources
文件夹下的schema.sql
以及data.sql
文件 - 编写创建表的
schema.sql
文件 - 编写预加载数据的
data.sql
文件
-
- 插入数据
-
JdbcTemplate
有两种保存数据的方法- 直接使用
update()
方法 - 使用
SimpleJdbcInsert
包装器类
- 直接使用
- 得到数据库生成的
ID
PreparedStatementCreator
KeyHolder
-
@SessionAttributes("object")
:类级别的Session
能够指定Object
保存在session
中,这样才能跨请求使用 -
@ModelAttribute(name="object")
:能够确保在模型中创建一个object对象
-
使用Spring Data JPA持久化数据
-
Spring Data
是一个巨大的伞形项目,由多个子项目组成,比较流行的几个项目包括:-
Spring Data JPA
:基于关系型数据库进行JPA持久化 -
Spring Data MongoDB
:持久化到Mongo文档数据库 -
Spring Data Neo4j
:持久化到Neo4j图数据库 -
Spring Data Redis
:持久化到Redis key-value存储 -
Spring Data Cassandra
:持久化到Cassandra数据库
-
- 特性
- 基于
repository
规范接口自动生成repository
的功能
- 基于
- 注解
-
@Entity
:将类声明为JPA实体
-
@Id
:注明id属性
-
@GeneratedValue
:标注数据是生成的值,可以设置strategy
为Auto
-
@ManyToMany
:声明对象之间的映射关系,多对多 -
@PrePersist
:注明函数在持久化之前的运行 -
@Table(name="table_name")
:表明类实体应该持久化到name=“repository_name”
表中,但是这个表名的大小写无法控制- 控制表名需要重写
PhysicalNamingStrategy
类,并设置hibernate命名策略
(参考链接)
- 控制表名需要重写
-
@Enumerated(EnumType.STRING)
:设定枚举类型在表中的类型
-
-
JPA
需要一个无参构造器-
@NoArgsConstructor
:Lombok注解
能够实现无参构造器
-
-
CrudRepository
接口- 默认实现
CRUD
等操作,数据仓库接口继承该类就可以使用 - 自定义
- 根据方法名
- 方法名组成:动词+[主题]+关键词+断言
- 主题一般就是查找的类型,可以省略
- 动词是指明方法想要执行的动作,例如查找
find
、删除delete
、保存save
等 - 断言指定查找的属性以及筛选条件
- 例如:
findByZip()
、readOrdersByZipAndPlacedAtBetween()
- 使用
@Query
注解- 方法名上使用注解,在注解中指明明确需要调用的
sql语句
- 方法名上使用注解,在注解中指明明确需要调用的
- 根据方法名
- 默认实现