三个表,分别是movie(电影表),type(类型)和movie_type。
- 电影表
- 类型表
- movie_type表
- bean层
-movie
import java.util.List;
public class Movie {
private Integer movieId;
private String movieName;
private String pic;
//从表实体包含一个主表实体的对象引用
private List listType;
public Integer getMovieId() {
return movieId;
}
public void setMovieId(Integer movieId) {
this.movieId = movieId;
}
public String getMovieName() {
return movieName;
}
public void setMovieName(String movieName) {
this.movieName = movieName;
}
public String getPic() {
return pic;
}
public void setPic(String pic) {
this.pic = pic;
}
public List getListType() {
return listType;
}
public void setListType(List listType) {
this.listType = listType;
}
@Override
public String toString() {
return "Movie{" +
"movieId=" + movieId +
", movieName='" + movieName + ''' +
", pic='" + pic + ''' +
", listType=" + listType +
'}';
}
}
- type
import java.util.List;
public class Type {
private Integer typeId;
private String typeName;
//
private List listMovie;
//set和get方法
public Integer getTypeId() {
return typeId;
}
public void setTypeId(Integer typeId) {
this.typeId = typeId;
}
public String getTypeName() {
return typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public List getListMovie() {
return listMovie;
}
public void setListMovie(List listMovie) {
this.listMovie = listMovie;
}
//toString方法
@Override
public String toString() {
return "Type{" +
"typeId=" + typeId +
", typeName='" + typeName + ''' +
", listMovie=" + listMovie +
'}';
}
}
- DAO层
public interface MovieDao {
//根据ID查电影
List getMovieById(int id);
}
- mapper
SELECT a.movie_id, a.movie_name, c.type_name typeName, a.movie_pic, FROM movie a LEFT JOIN movie_type b ON a.movie_id = b.movie_id LEFT JOIN type c ON b.type_id = c.type_id WHERe a.movie_id = #{movieId}
问题在这( c.type_name typeName,)
- serviceImpl
@Service
public class MovieSerImpl implements MovieService {
@Autowired
private MovieDao movieDao;
@Override
public List getMovieId(int movieId) {
return movieDao.getMovieById(movieId);
}
}
-Test
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestMovie {
@Autowired
MovieSerImpl movieSer;
@Test
public void getSjService() {
//设置要查找的电影id
Integer a=1;
//电影集合
List list =movieSer.getMovieId(a);
//集合长度
int b= list.size();
//输出集合长度
System.out.println("list长度"+b);
//遍历集合,并输出
for (Movie movie:list){
System.out.println(movie);
}
// System.out.println(movieSer.getMovieId(a));
}
}
查询
list长度1
Movie{movieId=1, movieName='寒战', pic='movie——1', listType=[]}
结果
这里结果为空listType=[]
出现的原因是我复制
SELECT a.movie_id, a.movie_name,c.type_name typename ,a.movie_pic FROM movie a
LEFT JOIN movie_type b ON a.movie_id = b.movie_id
LEFT JOIN type c ON b.type_id = c.type_id WHERe a.movie_id = 1
SQL语句时候用了别名 typeName 导致我这个listType[]为空,现在将别名删去就正常有结果映射了。



