Spring Jpa多表查询

Spring Jpa多表查询

1.创建两个Entity,SysUserEntity 和SysUserPointEntity,代码如下

     //SysUserEntity  
    @Entity(name = "SysUser")
    @Table(name = "SysUser")
    public class SysUserEntity  implements Serializable {
        private int id;
        private Integer parentUserId;
        private String userCode;
        private String userName;
        private String password;
        private String phone;
        private Boolean active;
        private Integer roleId;
        private Integer clientId;
        private Byte userType;
        private Integer loginNum;
        private Timestamp lastLoginTime;
        private String memo;
        private String modifyMan;
        private Timestamp modifyTime;
        private String phoneMac;
        //省略get/set方法





   //SysUserPointEntity
   @Entity
	@Table(name = "SysUserPoint")
	public class SysUserPointEntity {
	    private int id;
	    private int userId;
	    private String address;
	    private Double longitude;
	    private Double latitude;


 //UserInfoVO 
@Data
@AllArgsConstructor
public class UserInfoVO implements Serializable {
    private SysUserEntity sysUserEntity;
    private SysUserPointEntity sysUserPointEntity;
}

2.创建SysUserRepository,@Query中sql查询的是实体类型,而不是数据库表

@Repository
public interface SysUserRepository extends JpaRepository<SysUserEntity,Integer> {
    @Query(value = "SELECT new com.cy.cloudoa.userservice.entity.sys.user.vo.UserInfoVO(u, a) FROM com.cy.cloudoa.userservice.entity.sys.SysUserEntity u, com.cy.cloudoa.userservice.entity.sys.SysUserPointEntity a WHERE u.id = a.userId")
     List<UserInfoVO> findViewInfo();

}

3.创建SysUserServiceImpl

@Service
public class SysUserServiceImpl implements SysUserService {
    @Autowired
   private SysUserRepository sysUserRepository;

    @Override
    public SysUserEntity getById(Integer id) {

        return sysUserRepository.findById(id).get();
    }

    @Override
    public  List<UserInfoVO> get() {
        List<UserInfoVO> list =  sysUserRepository.findViewInfo();
        list.forEach( k->{
            System.out.print(k.getSysUserEntity().getUserName());
        });
        return list;
    }
}

4.创建SysUserService

public interface SysUserService {
    SysUserEntity getById(Integer id);

    List<UserInfoVO> get();
}

5.创建SysUserController

@RestController
@RequestMapping("/sys/user")
public class SysUserController {
    @Autowired
     private SysUserService sysUserService;
     @GetMapping("/get/{id}")
     public SysUserEntity getById(@PathVariable Integer id){
         return sysUserService.getById(id);
     }

     @GetMapping("/get")
     public List<UserInfoVO> get(){
         return sysUserService.get();
     }
}

6.运行结果
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿越清华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值