一对一查询
编写实体类
查询订单所对应的一对一用户类
创建orders类,orders类包含User类对象
//用户类
public class User {
private int id;
private String username;
private String password;
//get set方法
}
//订单类
public class Orders {
//订单id
private String oid;
//用户id
private String uid;
//订单创建时间
private Date createTime;
//备注
private String note;
//订单所属的id
private User user;
//set get方法
}
创建orders表
添加测试数据:
编写mapper接口与mapper映射文件
定义接口:
public interface OrdersMapper {
Orders getOrdersById(String oid);
}
定义Ordersmapper映射文件:
<mapper namespace="com.lg.mapper.OrdersMapper">
<resultMap id="getOrders" type="orders">
<id column="oid" property="oid"></id>
<result column="uid" property="uid"></result>
<result column="createTime" property="createTime"></result>
<result column="note" property="note"></result>
<association property="user" javaType="user">
<id column="id" property="id"></id>
<result column="username" property="username"></result>
<result column="password" property="password"></result>
</association>
</resultMap>
<select id="getOrdersById" parameterType="string" resultMap="getOrders">
select * from orders o,users u where o.oid=#{
id} and o.uid= u.id;
</select>
</mapper>
定义测试方法
@Test
public void getOrdersByid(){
SqlSession sqlSession = MySessionUtils.getSession();
OrdersMapper dao = sqlSession.getMapper(OrdersMapper.class);
Orders orders = dao.getOrdersById("O1001");
System.out.println(orders);
}
效果截图:
一对多查询
查询用户id为1的所有订单。
修改User类
往user类里面添加List< Orders> 对象
public class User {
private int id;
private String username;
private String password;
private List<Orders> list;
//set get方法
}
编写接口方法与mapper.xml文件
//定义接口
public User findByIdAttachOrders(int id);
//mapper映射文件
<select id="findByIdAttachOrders" parameterType="int" resultMap="userAttachOrders">
select * from users u,orders o where u.id=#{
id} and o.uid=u.id;
</select>
<resultMap id="userAttachOrders" type="user">
<id column="id" property="id"></id>
<result column="username" property="username"></result>
<result column="password" property="password"></result>
<collection property="list" ofType="orders">
<id column="oid" property="oid"></id>
<result column="uid" property="uid"></result>
<result column="createDate" property="createDate"></result>
<result column="note" property="note"></result>
</collection>
</resultMap>
编写测试类
@Test
public void findByIdAttachOrders(){
SqlSession sqlSession = MySessionUtils.getSession();
UserMapper dao = sqlSession.getMapper(UserMapper.class);
User user = dao.findByIdAttachOrders(1);
//获取User中的OrderList
List<Orders> list = user.getList();
list.forEach(orders -> System.out.println(orders));
}
效果截图:
根据用户id找出了与之对应的所有订单,实现了一对多