spring data jpa 表不关联多表查询

直接上代码

import com.supergk.core.project.bean.ProjectUser;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;

public interface ProjectRepository extends JpaRepository<Project, Integer>, JpaSpecificationExecutor<Project> {
//

    @Query(value = "SELECT p.id as id, p.contactName as contactName, a.name as username FROM Project p, Account a WHERE p.contactName = ?1 and p.AccountId = a.id",
            countQuery = "SELECT count(p) FROM Project p, Account a WHERE p.contactName = ?1 and p.AccountId = a.id")
    Page<ProjectUser> findByLastname(String contactName, Pageable pageable);
}

package com.supergk.core.project.bean;

/**
 * Created by LM on 2017/8/7.
 */
public interface ProjectUser {
    public Integer getId();
    public String getContactName();
    public String getUsername();
}
这样就可以

Page<ProjectUser> findByLastname(String contactName, Pageable pageable);
也可以返回object
Page<Object>

Controller里面
        Page<ProjectUser> page = projectService.projectPageCriteria(pageable, project);
        System.out.println(page.getSort() + "--1");
        System.out.println(page.getSize() + "--2");
        System.out.println(page.getTotalPages() + "--3");
        System.out.println(page.getNumber() + "--4");
        System.out.println(page.getTotalElements() + "--5");
        System.out.println(page.getContent() + "-===");
//        List<ProjectUser> projectList = page.getContent();
        List<Object> projectList = page.getContent();
        for(int i = 0; i <projectList.size(); i++) {
            Object[]  os = (Object[])projectList.get(i);
            System.out.println(os[0]);
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Spring Data JPA中,多表关联插入可以通过如下方式实现: 1. 定义实体类之间的关联关系 在实体类中使用注解来定义表之间的关联关系,例如: ``` @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToMany(mappedBy = "user") private List<Order> orders; } @Entity @Table(name = "order") public class Order { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne @JoinColumn(name = "user_id") private User user; } ``` 2. 创建DTO对象 创建一个DTO对象,用于接收前端传递的参数,例如: ``` public class OrderDTO { private Long userId; private String orderName; // getter and setter } ``` 3. 在Repository中定义保存方法 在Repository中定义一个保存方法,用于保存Order对象,并关联User对象,例如: ``` @Repository public interface OrderRepository extends JpaRepository<Order, Long> { @Transactional @Modifying @Query(value = "INSERT INTO `order` (`order_name`, `user_id`) VALUES (:orderName, :userId)", nativeQuery = true) void saveOrder(@Param("orderName") String orderName, @Param("userId") Long userId); } ``` 4. 在Service中调用Repository方法 在Service中调用Repository中定义的方法,将前端传递的参数转换为实体对象,例如: ``` @Service public class OrderServiceImpl implements OrderService { @Autowired private OrderRepository orderRepository; @Autowired private UserRepository userRepository; @Override public void saveOrder(OrderDTO orderDTO) { User user = userRepository.getOne(orderDTO.getUserId()); orderRepository.saveOrder(orderDTO.getOrderName(), user.getId()); } } ``` 这样就可以实现多表关联插入了。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值