orders表: user表:
实体类属性:
一.多表一对一配置查询语句:select *,o.id iod from orders o,user u where o.uid=u.id
目的:把如图所示user属性封装到order实体类的user属性里
1.编写OrderMapper类->编写对应OrderMapper.xml映射文件->核心配置文件配置映射文件
2.编写映射文件sql语句
1.配置resultMap映射
方法1:直接使用“类型.属性”封装
方法2:使用标签封装
2.编写查询语句
3.测试类select *,o.id iod from orders o,user u where o.uid=u.id
@Test
public void test1() throws IOException {
//获得核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获得session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行操作 参数:namespace + id
OrderMapper mapper = sqlSession.getMapper(OrderMapper.class);
List all = mapper.findAll();
System.out.println(all);
//释放资源
sqlSession.close();
}
二.多表一对多配置
一个用户对应多个订单,一个订单只属于一个用户,查询一个用户,同时查询出该用户具有的订单
查询语句:select *,o.id oid from user u,orders o where u.id=o.uid
1.给user实体添加属性
//描述的是当前用户存在哪些订单
private List orderList;
2.编写对应的mapper类及映射文件sql语句
1.
2.结果映射使用
3.测试类
@Test
public void test2() throws IOException {
//获得核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获得session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行操作 参数:namespace + id
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List all = mapper.findAll();
for (User user : all) {
System.out.println(user);
}
//释放资源
sqlSession.close();
}
三.对多对查询配置
用户表和角色表过的关系为,一个用户有多个角色,一个角色被多个用户使用
多对多查询的需求:查询用户同时查询出该用户的所有角色
select * from user u,sys_user_role ur,sys_role r where u.id=ur.userId and ur.roleId=r.id
图来自黑马程序员:
sys_role表 sys_user_role表 user表为原表
Role属性
User实体添加
1.直接上映射文件代码 测试类同上作调用方法修改即可select * from user u,sys_user_role ur,sys_role r where u.id=ur.userId and ur.roleId=r.id
参考接口及配置文件
package com.itheima.mapper;
import com.itheima.domain.User;
import java.util.List;
public interface UserMapper {
public List findAll();
public List findUserAndRoleAll();
}
package com.itheima.mapper;
import com.itheima.domain.Order;
import java.util.List;
public interface OrderMapper {
public List findAll();
}
核心



