3.8-持久化层框架
优质
小牛编辑
140浏览
2023-12-01
名称 | 方法 | 实现 |
---|---|---|
Hibernate | 优势 | 劣势 |
Mybaties | ||
Jpa | get |
1. Hibernate
1.1 单独使用
1.1.1 For Idea
- 新建项目:【File】——>【New】——>【Project】——>【Java】——>【Hibernate、JavaEE Persistence】
- 添加数据连接驱动
- 配置数据源
- 根据数据库表生成实体类:【Persistence】——>【名称】——>【Generate Persistence Mapping】——>【By Database Schema】
1.1.1.5 生成配置 hibernate.cfg.xml 文件
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:postgresql://192.168.1.149:5432/postgres</property>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="connection.pool_size">100</property>
<property name="connection.username">postgres</property>
<property name="connection.password">123456</property>
<mapping class="entity.TfsmetaEntity"/>
</session-factory>
</hibernate-configuration>
1.1.1.6 生成测试类
1.1.2 For Eclipse
1.2 与 Spring 的整合
1.2.1 For Idea
1.2.2 For Eclipse
2. Jpa
2.1 单独使用步骤
- 新建 mvn 项目
- 添加依赖 pom.xml
- 新建实体类
- 新建 Repository 类
- 新建测试类
2.2 功能
2.2.1 Repository 接口
- Spring Data 的核心接口,不提供任何方法。
- public interface Repository
- 继承 Repository 接口,或添加 @RepositoryDefinition,Spring 容器才能管理用户定义的 Repository。
2.2.2 Repository 子接口
2.2.2.1 CrudRepository
方法 | 功能 |
---|---|
save(entity) | 保存并返回一个实体对象。 |
saveAll(entities) | 保存并返回一个实体的 Iterable 对象 |
findById(id) | 通过id查询一条数据 |
existsById(id) | 通过id判断对象是否存在。 |
findAll() | 全量查询,返回一个 Iterable 对象 |
findAllById(ids) | 根据 ID 的 Iterable 对象返回一个实体 Iterable 对象 |
count() | 记录总数 |
void deleteById(id) | 根据 id 删除一条记录 |
delete(entity) | 根据实体删除一条记录 |
deleteAll(entities) | 根据实体的 Iterable 对象删除 |
void deleteAll() | 删除所有。 |
2.2.2.2 PagingAndSortingRepository
继承了 CrudRepository,实现了分页排序功能。 |方法|功能| |------|------| |findAll(Sort sort)|全量查询并按指定字段排序| |findAll(Pageable pageable)|返回 Page 对象。|
2.2.2.3 JpaRepository
继承了 PagingAndSortingRepository,实现了 JPA 规范的相关方法。
方法 | 功能 |
---|---|
findAll | 全量查询,返回实体的 List 对象 |
findAll(Sort sort) | 全量查询,返回一个 List 对象,并按指定字段排序。 |
findAllById | 根据 ID 的 Iterable 对象返回一个实体 List 对象。 |
saveAll(entities) | 保存实体的 Iterable 对象,返回实体的 List 对象。 |
void deleteInBatch(entities) | 根据实体的 Iterable 对象删除。 |
void deleteAllInBatch() | 根据实体的 Iterable 对象删除。 |
flush | |
saveAndFlush | |
T getOne(Id id) | 根据 ID 查询一条记录。 |
2.3 查询方法定义的规则和使用
关键词 | 方法名 |
---|---|
And | findByFirstnameAndLastname |
Or | findByFirstnameOrLastname |
Between | findByStartDateBetween |
After | findByStartDateAfter |
Before | findByStartDateBefore |
LessThan | findByAgeLessThan |
GreatThan | findByAgeGreatThan |
IsNull | findByAgeIsNull |
IsNotNull(NotNull) | findByAge(Is)NotNull |
Like | findByFirstnameLike |
NotLike | findByFirstnameNotLike |
StartingWith | findByFirstnameStartingWith |
EndingWith | findByFirstnameEndingWith |
Containing | findByFirstnameContaining |
OrderBy | findByAgeOrderByFirstnameDesc |
Not | findByFirstnameNot |
In | findByAgeIn |
NotIn | findByAgeNotIn |
True | findByActiveTrue |
False | findByActiveFalse |
2.4 Query 注解
- 在 Repository 方法中使用,不需要遵循命名规则,只需要将 @Query 定义在 Repository 的方法上即可。
- 支持命名参数和索引参数。
- SQL 语句中,将表名替换为类名,也可以支持原生的查询语句。
3. Mybaties
3.1 单独使用
3.1.1 添加依赖
pom.xml3.1.2 添加 Spring 配置文件
create database testmybaties; use testmybaties; create table user(id int,username varchar(100),mobile varchar(100)); create table``` ### 3.1.3 添加 mybaties 主配置文件 ### 3.1.4 添加 mapper 配置文件 ### 3.1.5 添加 Dao 接口 ## 3.2 ### 3.2.1 添加依赖 ### 3.2.2 添加 mybaties 主配置文件 ### 3.1.3 添加 mapper 配置文件 ### 3.1.4 添加 Dao 接口 ### 3.1.5 创建 Configuration 类
order
(order_id int,order_no varchar(40),money float(6,2),user_id int); insert into user(id,username,mobile) values (1,'wlj','15501686403'); insert intoorder
(order_id,order_no,money,user_id) values(123,'255',250,'1'); ```参考资料
- Intellij IDEA的Hibernate简单应用