Mybatis:4 一对一查询
文章目录
一、一对一查询的模型
用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户。一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户。
二、一对一查询的语句
1.对应的sql语句:select * from orders o,user u where o.uid=u.id;
结果:
2.创建Order和User实体
代码如下(示例):
public class order {
private int id;
private String ordertime;
private double total1;
//代表订单属于哪个用户
private User user;
}
public class User {
private Integer id;
private String username;
private String password;
}
3.创建OrderMapper接口
public interface OrderMapper {
List<order> findAll();
}
4.配置OrderMappper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.study.mapper.OrderMapper">
<resultMap id="orderMap" type="com.study.pojo.order">
<result property="id" column="id"></result>
<result property="ordertime" column="ordertime"></result>
<result property="total1" column="total1"></result>
<association property="user" javaType="com.study.pojo.User">
<result column="uid" property="id"></result>
<result column="username" property="username"></result>
<result column="password" property="password"></result>
</association>
</resultMap>
<select id="findAll" resultMap="orderMap">
SELECT * FROM `user` u, `order` o WHERE o.uid = u.id;
</select>
</mapper>
5.需要在核心配置文件引入映射配置文件位置
<!--引入映射配置文件-->
<mappers>
<mapper resource="UserMapper.xml"/>
<mapper resource="com\study\mapper\OrderMapper.xml"/>
</mappers>
6.测试代码
@Test
public void test02() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession1 = sqlSessionFactory.openSession(true);
OrderMapper mapper = sqlSession1.getMapper(OrderMapper.class);
List<order> orderAndUser = mapper.findAll();
for (order order : orderAndUser) {
System.out.println(order);
}
}
总结
一对一简单查询实例