3.8-持久化层框架

优质
小牛编辑
140浏览
2023-12-01
名称方法实现
Hibernate优势劣势
Mybaties
Jpaget

1. Hibernate

1.1 单独使用

1.1.1 For Idea

  • 新建项目:【File】——>【New】——>【Project】——>【Java】——>【Hibernate、JavaEE Persistence】
  • 添加数据连接驱动
  • 配置数据源
  • 根据数据库表生成实体类:【Persistence】——>【名称】——>【Generate Persistence Mapping】——>【By Database Schema】 根据数据库表生成实体类.png

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 查询方法定义的规则和使用

关键词方法名
AndfindByFirstnameAndLastname
OrfindByFirstnameOrLastname
BetweenfindByStartDateBetween
AfterfindByStartDateAfter
BeforefindByStartDateBefore
LessThanfindByAgeLessThan
GreatThanfindByAgeGreatThan
IsNullfindByAgeIsNull
IsNotNull(NotNull)findByAge(Is)NotNull
LikefindByFirstnameLike
NotLikefindByFirstnameNotLike
StartingWithfindByFirstnameStartingWith
EndingWithfindByFirstnameEndingWith
ContainingfindByFirstnameContaining
OrderByfindByAgeOrderByFirstnameDesc
NotfindByFirstnameNot
InfindByAgeIn
NotInfindByAgeNotIn
TruefindByActiveTrue
FalsefindByActiveFalse

2.4 Query 注解

  • 在 Repository 方法中使用,不需要遵循命名规则,只需要将 @Query 定义在 Repository 的方法上即可。
  • 支持命名参数和索引参数。
  • SQL 语句中,将表名替换为类名,也可以支持原生的查询语句。

    3. Mybaties

    3.1 单独使用

    3.1.1 添加依赖

    pom.xml

    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'); ```

    参考资料

  • Intellij IDEA的Hibernate简单应用