【JPA】mybatis、mybatisPlus、JPA使用过程

本文介绍了Spring Data JPA、MybatisPlus和Mybatis的使用,重点阐述了JPA的环境准备、Entity实体类创建、Repository接口编写以及各种查询方法,包括简单查询、排序、分页、复杂查询、原生SQL和多表关系映射。通过实例展示了JPA如何处理一对多、多对多关系,并提到了动态SQL的两种实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JPA

mybatisPlus

mybatis

JPA

Spring Data JPA为Java Persistence API(JPA)提供了实现。它简化了通过JPA访问数据库的开发工作,提供了很多CRUD的快捷操作,还提供了如分页、排序、复杂查询、自定义查询(JPQL)等功能,Spring Data JPA底层也是依赖于Hibernate来实现的,Spring Data JPA拥有标准化、简单易用、面向对象等优势,并且Spring将EntityManager 的创建与销毁、事务管理等代码抽取出来,并由Spring统一进行管理。

引入依赖

  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
  </dependency>

application.yml配置

server:
#指定服务端口号
port: 8008

spring:
    application:
        #应用名称
        name: spring-data-jpa
    datasource:
        #你的数据库密码
        password: 123456
        #你的数据库地址
        url: jdbc:mysql://localhost:3306/spring_test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true
        #数据库用户名
        username: root
        #数据库驱动名称
        driver-class-name: com.mysql.cj.jdbc.Driver #配置MySQL的驱动程序类
        #指定连接池类型
        type: com.zaxxer.hikari.HikariDataSource
        #数据库连接池的配置
        hikari:
            #客户端等待连接池连接的最大毫秒数
            connection-timeout: 30000
            #连接池中维护的最小空闲连接数
            minimum-idle: 4
            #最大池大小
            maximum-pool-size: 8
            #允许连接池在连接池中空闲的最长时间(毫秒)
            idle-timeout: 30000
            #池中连接关闭的最长生命周期(毫秒)
            max-lifetime: 45000
            #从池返回的连接的默认自动提交行为(默认为true)
            auto-commit: true
            #连接池的名称
            pool-name: SpringDataJPAHikariCP

    #jpa相关配置
    jpa:
        hibernate:
            #DDL:用于定义数据库的三层结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性,安全控制等约束
            ddl-auto: none #什么也不做
            #其他可选值
            #create: 每次运行应用程序时,都会重新创建表,所以,数据都会丢失
            #create-drop:每次运行程序时会创建表结构,然后程序结束时清空数据
            #update: 每次运行程序没有表时会创建表,如果对象改变会更新表结构,原有数据不会清除,只会更新
            #validate: 运行程序会校验数据与数据库的字段类型是否相同,字段不同会报错
            #打印执行的sql及参数
        show-sql: true
        # 关闭懒加载配置,否则会报错
        open-in-view: false
        properties:
            hibernate:
                #输出sql语句
                show_sql: true
                #格式化输出的sql,否则会一行显示
                format_sql: true


环境准备:

数据库脚本

这里简单介绍一下表和表之间的关系,一个Banner对应多个BannerItem,属于一对多关系,一个Goods商品可以属于多个商品分类,一个商品分类下面会有多个商品,属于多对多关系,需要用第三张表goods_category_relation来进行组织。

JPA使用:

1.生成Entity实体类
2.创建repository包,编写Repository接口,需要继承JpaRepository接口,指定两个泛型
3.在Repository接口中编写对应方法

3.1 简单查询
3.2 排序
3.3 分页
3.4 复杂查询- 自定义JPQL
3.5 JPA原生查询
3.6 多表联结之一对多关系映射
3.7 多表联结之多对多关系映射
3.8 动态sql

1.生成Entity实体类

@Table(name = “ding_xzbg_admin”)

@Entity:标志为一个JPA的实体类

@Getter、@Setter:表示设置实体类属性的Getter、Setter方法。

@Id注解:标志数据库表的主键字段。

@GeneratedValue(strategy = GenerationType.IDENTITY):指定主键的生成策略,当前指定的策略为主键自增,由数据库进行生成。

@Column:实体和数据表列不同名的时候才有用,如数据库字段banner_id,实体类字段id,这时就要使用@Column注解来标志数据库字段名称@Column(name=“banner_id”)

@Basic:标志是数据库表的列,这个注解会默认加载字段上,如果数据表没有这个字段将会报错。

@Transient:如果想忽略实体类的某一个字段时,可以使用这个注解,JPA就不会将这个字段作为数据表的列。

 @Entity
 @Getter
 @Setter
 public class Banner {
   
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
     private String name;
     private String description;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date modifyTime;
    private Integer deleted
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值