输入和输出映射
resultType
指定输出结果的类型(pojo、简单类型、hashmap等),将sql查询结果映射为java对象 。
注意:sql查询的列名要和resultType指定pojo的属性名相同,指定相同属性方可映射成功,如果sql查询的列名要和resultType指定pojo的属性名全部不相同,list中无法创建pojo对象。
resultMap
将sql查询结果映射为java对象。
如果sql查询列名和最终要映射的pojo的属性名不一致,使用resultMap将列名和pojo的属性名做一个对应关系(列名和属性名映射配置)
使用resultMap
高级映射
一对一查询
使用resultType实现
单表po类
创建自定义POJO,继承自sql查询列多的po类。
mapper.xml
定义mapper.xml文件,创建的pojo必须包括订单信息和用户信息,创建一个orderCustom
mapper.java
使用resultMap实现
resultMap提供一对一关联查询的映射和一对多关联查询映射,一对一映射思路:将关联查询的信息映射到pojo中
在主查询Orders类中创建一个User属性,将关联查询的信息映射到User属性中。
mapper.xml
resultMap定义
mapper.java
小结
resultType:要自定义pojo ,保证sql查询列和pojo的属性对应,这种方法相对较简单,所以应用广泛。
resultMap:使用association完成一对一映射需要配置一个resultMap,过程有点复杂,如果要实现延迟加载就只能用resultMap实现 ,如果为了方便对关联信息进行解析,也可以用association将关联信息映射到pojo中方便解析。
一对多查询
查询所有订单信息及订单下的订单明细信息。
SELECT orders.*, user.username, user.sex , orderdetail.id orderdetail_id, orderdetail.items_num, orderdetail.items_id FROM orders, USER, orderdetail WHERE orders.user_id = user.id AND orders.id = orderdetail.orders_id
resultMap进行一对多映射
resultMap 提供collection完成关联信息映射到集合对象中。
在orders类中创建集合属性: