SpringBoot整合JPA(多表关联查询)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_40693828/article/details/95357975

Spring Boot Jpa 是 Spring 基于 ORM 框架、Jpa 规范的基础上封装的一套 Jpa 应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data Jpa 可以极大提高开发效率。

SpringBoot整合JPA实例:

1 导入maven依赖jar包:

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

2 在application.properties配置JPA属性:

spring.jpa.database=mysql           ##指定数据库
spring.jpa.show-sql=true            ##是否显示执行sql语句
spring.jpa.hibernate.ddl-auto=update       ##自动更新数据库表    若需要创建表则改为create

3 创建实体类User和Part,定义两个类用于关联查询,查询出用户的同时获取所在的部门信息

import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
@Entity
@Table(name="user")
@Data
public class User {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

   @Column(name="name")
    private String name;

   @Column(name="job")
    private String job;

   @Column(name="pid")
   private Integer pid;

    public User(String name, String job, Integer pid) {
        this.name = name;
        this.job = job;
        this.pid = pid;
    }

    public User() {
    }
}
import lombok.Data;
import javax.persistence.*;
@Entity
@Table(name="part")
@Data
public class Part {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer pid;

    @Column(name="partname")
    private String partname;
}

4 创建接口UserRepository集成JpaRespository:

import com.irootech.bean.User;
import com.irootech.dao.Impl.UserPortDao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public interface UserRepository extends JpaRepository<User,Integer> {

    //添加用户
    User save(User user);

    //条件查询
    List<User>   findByName(String name);

    //关联查询    @Query可以用于自定义sql语句,如果是修改需加上@Modifying ,这是一条关联查询语句,返回的结果映射到新对象中,新对象为接口,里面含有对应参数的构造方法。
    @Query(value="select u.id,u.name,u.job,u.pid,p.partname  from user u left join part p on u.pid=p.pid ",nativeQuery = true)
      public   List<UserPortDao>   findViewInfo();


}

5 UserPortDao接口编写:

public interface UserPortDao {
     int getId();
     String getName();
     int getPid();
     String getJob();
     String getPartname();
}

6  测试类

@Test
	public void contextLoads() {
		User user=new User("zhangsanlisi","前端",1);
            //  repository.save(user);
              String str="zhangsanlisi";
             // List<User> users=repository.findByName(str);
             // System.out.println(users);
           
		List<UserPortDao> viewInfos = userInfoRepository.findViewInfo();
		for (UserPortDao viewInfo : viewInfos) {
			System.out.println(viewInfo.getId()+viewInfo.getJob()+viewInfo.getName()+viewInfo.getPid()+viewInfo.getPartname());
		}
	}

猜你喜欢

转载自blog.csdn.net/qq_40693828/article/details/95357975