目录
一:多张数据表写入同一个实体类
二:多表查询 一对一
三:多表查询 一对多
四:多表查询 多对多
一:多张数据表写入同一个实体类
现在有两张表。一张student表,一张class表
实体类
@Data
public class ClassAndStudent {
private int cid;
private String course;
private int tid;
//以上为class表数据,以下为Student表数据
private int sid;
private String sname;
private String sbirth;
private String sgender;
}
Dao层
@Repository
public interface UseXmlDao {
List findAll();
}
Service层
//接口层
@Service
public interface UserService {
List findAll();
}
//实现接口层
@Service
public class UserServiceImp implements UserService {
@Autowired
private UseXmlDao useXmlDao;
@Override
public List findAll() {
return useXmlDao.findAll();
}
Controller层
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping ("/duobiao")
public @ResponseBody List findAll(){
List classAndStudentList = userService.findAll();
return classAndStudentList;
}
}
XML
select * from student,class
输出结果(笛卡儿积)
注意!使用这种方法进行多表查询时,
- 实体类中有哪些属性,输出结果就有哪些属性,
- sql语句中如果只查询其中一些属性,实体类中未查询的属性会显示 0 或 null
例如:去掉课程和生日属性,输出结果页没有
@Data
public class ClassAndStudent {
private int cid;
// private String course;
private int tid;
private int sid;
private String sname;
// private String sbirth;
private String sgender;
}
无课程和生日字段
例如:查询学生ID,学生姓名,课程名称
返回学生ID,学生姓名,课程名称
二:多表查询 一对一
现在有两个表
user表(表名为aa_user)
order表 (表名为aa_order)
Order的实体类
@Data
public class Order {
private int oid;
private String ordertime;
private int total;
private User user;//数据库中为u_id,此处使用 User user 是为了与aa_user表连接关系
}
User的实体类
@Data
public class User {
private int uid;
private String username;
private String password;
private String gender;
}
XML
//与Dao接口名字相同// resultMap名字自取,type为主体实体类名称 // column为数据库的列名,property为实体类的名字 // property 为当前实体(Order)中的属性名称(Private User user); // javaType 为当前实体(Order)中属性的类型
输出结果
多表查询使用 resultMap 进行二次封装
一对一使用 association
- property:为当前实体(Order)中的属性名称(Private User user);
- javaType:为当前实体(Order)中属性的类型
三:多表查询 一对多
user实体类
@Data
public class User {
private int uid;
private String username;
private String password;
private String gender;
private List orderList; //用于查询其他Order
}
XML
//property为当前集合名称 ofType:集合中的数据类型
输出结果
一次多使用 collection
- property: 为当前集合名称
- ofType:集合中的数据类型
四:多表查询 多对多
。。。。 太复杂的 我觉得不会让我写 哈哈



