例:用户和订单之间的关系,查询一个订单所属的一个用户
select * from orders o,user u where o.uid=u.id;
/*
* Order类
*/
public class Order {
private int id;
private String orderinfo;
// 订单所属的用户
private User user;
}
/*
* User类
*/
public class User {
private int id;
private String name;
}
public interface OrderMapper {
List<Order> findAll();
}
<mapper namespace="com.Zhou.mapper.OrderMapper">
<!--容器封装映射-->
<resultMap id="orderMap" type="com.Zhou.Pojo.Order">
<result column="uid" property="user.id"></result>
<result column="name" property="user.name"></result>
</resultMap>
<!--SQL语句查询-->
<select id="findAll" resultMap="orderMap">
select * from orders o,user u where o.uid=u.id
</select>
</mapper>
其中还可以配置如下:
<mapper namespace="com.Zhou.mapper.OrderMapper">
<!--容器封装映射-->
<resultMap id="orderMap" type="com.Zhou.Pojo.Order">
<result property="id" column="id"></result>
<result property="orderinfo" column="orderinfo"></result>
<association property="user" javaType="com.Zhou.Pojo.User">
<result column="uid" property="id"></result>
<result column="name" property="name"></result>
</association>
</resultMap>
<!--SQL语句查询-->
<select id="findAll" resultMap="orderMap">
select * from orders o,user u where o.uid=u.id
</select>
</mapper>
/**
* 查询一个订单对应的一个用户
*/
@Test
public void findOrders(){
OrderMapper mapper = sqlSession.getMapper(OrderMapper.class);
List<Order> all = mapper.findAll();
for (Order order :
all) {
System.out.println(order);
}
}
例:用户和订单之间的关系,查询一个用户的所有订单
select *,o.id oid from user u left join orders o on u.id=o.uid;
/*
* Order类
*/
public class Order {
private int id;
private Date ordertime;
private double total;
//代表当前订单从属于哪一个客户
private User user;
}
/*
* User类
*/
public class User {
private int id;
private String name;
// 当前用户拥有的所有订单
private List<Order> orders;
}
public interface UserMapper {
List<Order> findAll();
}
<mapper namespace="com.Zhou.mapper.UserMapper">
<resultMap id="userMap" type="com.Zhou.Pojo.User">
<result column="id" property="id"></result>
<result column="name" property="name"></result>
<collection property="orders" ofType="com.Zhou.Pojo.Order">
<result column="oid" property="id"></result>
<result column="orderinfo" property="orderInfo"></result>
</collection>
</resultMap>
<select id="findAll" resultMap="userMap">
select *,o.id oid from user u left join orders o on u.id=o.uid;
</select>
</mapper>
@Test
public void findAll(){
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> all = mapper.findAll();
for (User user :
all) {
System.out.println(user);
}
sqlSession.close();
}
例:用户和角色的关系,查询用户的同时查询该用户的所有角色。
select u.*,r.*,r.id rid from user u left join user_role ur on u.id=ur.user_id inner join role r on ur.role_id=r.id;
/*
* User类
*/
public class User {
private int id;
private String name;
private List<Order> orders;
private List<Role> roles;
}
/*
* Role类
*/
public class Role {
private int id;
private String roleName;
}
public interface UserMapper {
List<User> findAll();
// 新增查询所有用户的对应的角色的接口方法
List<User> findAllUserAndRole();
}
<resultMap id="userRoleMap" type="com.Zhou.Pojo.User">
<result column="id" property="id"></result>
<result column="name" property="name"></result>
<collection property="roles" ofType="com.Zhou.Pojo.Role">
<result column="rid" property="id"></result>
<result column="roleName" property="roleName"></result>
</collection>
</resultMap>
<select id="findAllUserAndRole" resultMap="userRoleMap">
select u.*,r.*,r.id rid
from user u
left join user_role ur on u.id=ur.user_id
inner join role r on ur.role_id=r.id;
</select>
@Test
public void findAllUserAndRole(){
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> allUserAndRole = mapper.findAllUserAndRole();
for (User user :
allUserAndRole) {
System.out.println(user);
}
sqlSession.close();
}
通过xml文件配置进行映射开发的完整步骤:
原文:https://www.cnblogs.com/CN-Zhou/p/13834076.html