名称
方法
实现
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 文件
/p>
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
jdbc:postgresql://192.168.1.149:5432/postgres
org.postgresql.Driver
true
true
100
postgres
123456
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 项目
新建实体类
新建 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 添加依赖
3.1.2 添加 Spring 配置文件
```
### 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 类
create database testmybaties;
use testmybaties;
create table user(id int,username varchar(100),mobile varchar(100));
create table 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 into order (order_id,order_no,money,user_id) values(123,'255',250,'1');
“`
参考资料