import lombok.Data;
import lombok.ToString;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
-
@Author : JCccc
-
@CreateTime : 2019/10/12
-
@Description :
**/
@Data
@Entity // 该注解声明一个实体类,与数据库中的表对应
@ToString
public class User {
@Id // 表明id
@GeneratedValue(strategy = GenerationType.IDENTITY) // 自动生成
private Long id ;
private Long cid ;
private String name ;
}
import lombok.Data;
import lombok.ToString;
import javax.persistence.*;
/**
-
@Author : JCccc
-
@CreateTime : 2019/10/14
-
@Description :
**/
@Data
@Entity // 该注解声明一个实体类,与数据库中的表对应
@ToString
public class Company {
@Id // 表明id
@GeneratedValue(strategy = GenerationType.IDENTITY) // 自动生成
private Long cid ;
private String companyName;
}
这里面是用到了lombok jar包的:
org.projectlombok
lombok
1.16.10
provided
User和Company两个实体类,通过cid作为关联键,运行项目,则会生成对应以下两种表:
company表:
user表:
ok,接下来 我们来实现一些关联这两张表的查询操作,
在UserMapper.java里面 扩展2个方法:
/**
-
@Author : JCccc
-
@CreateTime : 2019/10/12
-
@Description :
**/
@Component
public interface UserMapper extends JpaRepository<User,Long> {
/*
-
我们在这里直接继承 JpaRepository
-
这里面已经有很多现场的方法了,可以直接通过UserMapper.xxx()直接使用
-
这也是JPA的一大优点
-
*/
//查询list
@Query(value=“select u.name,c.cid,c.company_name from user u ,company c where u.cid=c.cid”,nativeQuery = true)
List<Map<String,Object>> getUserCompanyList();
//根据传入cid查询list
@Query(value=“select u.name,c.cid,c.company_name from user u ,company c where u.cid=c.cid and c.cid=(:cid)”,nativeQuery = true)
List<Map<String,Object>> getUserCompanyListByCid(@Param(“cid”) Long cid);
}
①注意上面,自己扩展的方法,是需要用@Query来进行编写sql语句的,同样如果是想写修改/删除,则需要额外加上注解@Modifying,这些可以额外去网上了解,这里只拿联合查询及运用map来接收数据做介绍。
②传参,可以细看上面代码里面的规则(cid参数)。
service层相关代码,UserService.java:
List<Map<String,Object>> getUserCompanyList();
List<Map<String,Object>> getUserCompanyListByCid(Long cid);
Impl里面的:
@Override
public List<Map<String,Object>> getUserCompanyList() {
return userMapper.getUserCompanyList();
}
@Override
public List<Map<String, Object>> getUserCompanyListByCid(Long cid) {
return userMapper.getUserCompanyListByCid(cid);
}
写两个简单的测试接口(controller使用@RestController):
@Autowired
private UserService userService;
@GetMapping(“/getUserCompanyList”)
public String getUserCompanyList() {
List<Map<String,Object>> list= userService.getUserCompanyList();
String jsonStr=JSON.toJSONString(list);
return jsonStr;