JPA关联&MyBatis

在Spring Boot应用中,数据访问层是一个核心组件,它负责应用程序与数据库之间的交互。Spring Boot支持多种数据访问技术,其中JPA(Java Persistence API)和MyBatis是两种非常流行的选择。每种技术都有其优势和适用场景,并且Spring Boot为它们提供了良好的集成支持。

JPA(Java Persistence API)

JPA是一种规范,它定义了对象/关系映射(ORM)的标准,允许开发者将Java对象映射到数据库表,并处理对象生命周期和关系。Spring Data JPA 是Spring Boot中用于简化JPA数据访问的一个模块。

JPA关联

在JPA中,实体之间的关联通常通过映射注解(如@OneToOne@OneToMany@ManyToOne@ManyToMany)来实现。这些注解定义了实体之间的关系以及如何在数据库中表示这些关系。


//@Entity
//@Table(name = "sys_user")
@TableName("sys_user")
@Data
//@NamedQueries(@NamedQuery(name = "User.findUserByName",query = "select u from User u where u.usrName = ?1"))
public class User implements Serializable {
//    @Id
//    @GeneratedValue(strategy = GenerationType.IDENTITY)
//    @Column(name = "usr_id")
    @TableId(type = IdType.AUTO)
    @TableField("usr_id")
    private Long usrId;
//    @Column(name = "usr_name")
    @TableField("usr_name")
    private String usrName;
//    @Column(name = "usr_password")
    private String usrPassword;
//    @Column(name = "usr_role_id")
    private Long usrRoleId;
//    @ManyToOne(targetEntity = Role.class)
//    @JoinColumn(name = "usr_role_id")
//    private Role role;
//    @Column(name = "usr_flag")
    private Integer usrFlag;

    public User() {
    }

//    public User(String usrName, String usrPassword, Role role, Integer usrFlag) {
//        this.usrName = usrName;
//        this.usrPassword = usrPassword;
//        this.role = role;
//        this.usrFlag = usrFlag;
//    }
//    public User(String usrName, String usrPassword, Long usrRoleId, Integer usrFlag) {
//        this.usrName = usrName;
//        this.usrPassword = usrPassword;
//        this.usrRoleId = usrRoleId;
//        this.usrFlag = usrFlag;
//    }
//
//
//    public Long getUsrId() {
//        return usrId;
//    }
//
//    public void setUsrId(Long usrId) {
//        this.usrId = usrId;
//    }
//
//    public String getUsrName() {
//        return usrName;
//    }
//
//    public void setUsrName(String usrName) {
//        this.usrName = usrName;
//    }
//
//    public String getUsrPassword() {
//        return usrPassword;
//    }
//
//    public void setUsrPassword(String usrPassword) {
//        this.usrPassword = usrPassword;
//    }
//
//    public Role getRole() {
//        return role;
//    }
//
//    public void setRole(Role role) {
//        this.role = role;
//    }

//
//    public Long getUsrRoleId() {
//        return usrRoleId;
//    }
//
//    public void setUsrRoleId(Long usrRoleId) {
//        this.usrRoleId = usrRoleId;
//    }
//
//    public Integer getUsrFlag() {
//        return usrFlag;
//    }
//
//    public void setUsrFlag(Integer usrFlag) {
//        this.usrFlag = usrFlag;
//    }
在application.properties中配置
spring.application.name=T369-Spring-Boot
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/crm?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456

#??JPA(Hibernate)????
#spring.jpa.properties.hibernate.hbm2ddl.auto=update
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
#spring.jpa.show-sql=true
#spring.jpa.properties.hibernate.format_sql=true
#mybatis.config-location=classpath:mybatis/mybatis-config.xml
#mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
#mybatis.type-aliases-package=com.ktjiaoyu.crm.entity
logging.level.root=warn
logging.level.com.ktjiaoyu.crm.mapper=trace
logging.pattern.console=%p%m%n
在启动类中需要使用

package com.ktjiaoyu.crm;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.ktjiaoyu.crm.mapper")
public class T369SpringBootApplication {

public static void main(String[] args) {
SpringApplication.run(T369SpringBootApplication.class, args);
}

}

 

总结

  • JPA提供了强大的ORM支持,使得对象与数据库之间的映射变得简单和自动化。JPA关联通过注解实现,适合那些希望减少数据库操作代码,并依赖JPA提供者(如Hibernate)来处理复杂场景的情况。
  • MyBatis则提供了更高的灵活性和控制能力,允许开发者编写具体的SQL语句,并通过映射文件精确地控制如何将查询结果映射到Java对象。MyBatis适合那些需要高度优化SQL性能,或者需要在复杂查询中保持对SQL完全控制的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值