1.Mybatis 多表操作
1.1 一对一
多表模型分类
- 一对一:在任意一方建立外键,关联对方的主键。
- 一对多:在多的一方建立外键,关联一的一方的主键。
- 多对多:借助中间表,中间表至少两个字段,分别关联两张表的主键。
一对一
一对一
- <resultMap>:配置字段和对象属性的映射关系标签。
id 属性:唯一标识
type 属性:实体对象类型
- <id>:配置主键映射关系标签。
- <result>:配置非主键映射关系标签。
column 属性:表中字段名称
property 属性: 实体对象变量名称
- <association>:配置被包含对象的映射关系标签。
property 属性:被包含对象的变量名
javaType 属性:被包含对象的数据类型
核心配置文件
映射配置文件
接口
测试类中执行
public void selectAll() throws Exception{
//1.加载核心配置文件
InputStream is = Resources.getResourceAsStream("MyBatisConfig.xml");
//2.获取SqlSession工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
//3.通过工厂对象获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//4.获取OneToOneMapper接口的实现类对象
OneToOneMapper mapper = sqlSession.getMapper(OneToOneMapper.class);
//5.调用实现类的方法,接收结果
List<Card> list = mapper.selectAll();
//6.处理结果
for (Card c : list) {
System.out.println(c);
}
//7.释放资源
sqlSession.close();
is.close();
}
一对一的查询进行实现
总的来说就是在
在对应表的类中添加关联的类
最后的查询结果中有两张表
在映射配置中对结果进行对应的赋值,查询出来的表格后三列就对其进行封装成person类
在Card类中定义person类的变量P待会进行封装
最后执行结果
一对一的实现就完成了
一对多的使用
一对多和一对一也差不多
是一张表的一个列对应另一张表的多个列
过程也是用类的封装进行操作
- 一对多最后执行结果的展示
多对多的使用
接口对学生对象进行封装
三表关系