mybatis使用resultMap实现一对一查询

来源:互联网 发布:广电网络的发展前景 编辑:程序博客网 时间:2024/04/29 18:06

在订单po类中 创建一个User的属性,然后利用resultMap将查询出来的与po进行自定义映射


订单Orders. java

public class Orders {private int id;//订单号private int user_id;//用户的idprivate String order_number;//订单号private User user;



Mapper.xml进行配置resultMap


<mapper namespace="com.mo.mapper.OrdersMapperCustom"><!-- 定义订单信息及用户信息的resultMap --><resultMap type="orders" id="ordersUserResultMap"><!-- id:订单的主键,或者是唯一的标示 result:是普通的字段--><id column="id" property="id"/><result column="user_id" property="user_id"/><result column="order_number" property="order_number"/><!-- 配置用户映射信息将查询出来的数据 映射到orders中的user属性中association:用于单个关系对象的映射property:将关联信息映射到order的哪一个属性javaType:映射属性的类型 --> <association property="user" javaType="com.mo.pojo.User"> <!--  进行映射 id:关联的用户信息的唯一约束 result:是普通字段 column:代表表的字段 property:代表po类的属性  --> <id column="user_id" property="id"/> <result column="username" property="username"/> <result column="address" property="address"/> </association></resultMap><!-- 使用resultMap实现订单查询,关联查询用户信息 --><select id="findOrderUserListResultMap" resultMap="ordersUserResultMap">SELECT orders.*,USER.username,USER.address FROM orders,USER WHERE orders.user_id = USER.id</select>


Mapper.java

public interface OrdersMapperCustom {List<OrdersCustom> findOrderUserListResultMap();}

单元测试

public class TestDao {//这里需要创建sqlSessionFactory工厂,因为创建新的UserDaoImpl需要注入会话工厂private SqlSessionFactory sqlSessionFactory;@Beforepublic void setUp() throws IOException{String resource = "SqlMapConfig.xml";InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}@Testpublic void test3(){SqlSession sqlSession = sqlSessionFactory.openSession();OrdersMapperCustom ordersMapperCustom = sqlSession.getMapper(OrdersMapperCustom.class);List<OrdersCustom> list = ordersMapperCustom.findOrderUserListResultMap();System.out.println(list.size());}}





0 0