java ssm中查询方法,【SSM-MyBatis框架】关联查询--一对一查询

1.ResultType实现:

1.sql语句(mapper.xml):

SELECT

orders.*,

user.username,

user.sex,

user.address

FROM

orders,

USER

WHERE orders.user_id = user.id

2.pojo类:

创建pojo类,完成上面sql的映射,将查询出来的列不存在的创建出来。原始的order类不能完成映射,需要建立order的扩展类去添加不存在的列。

/**

* 关联查询例子 使用resulttype

*

* @author

*

*/

public class OrdersCustom extends Orders{

/**

* user.username,

user.sex,

user.address

将关联查询结果中没有的值,添加

*/

private String username;

private String sex;

private String address;

3.mapper.java接口

/**

* 通过reslutType进行一对一查询

*/

public List findOrdersCustom();

4.小结:

定义专门的po类作为输出类型,其中定义了sql查询结果集所有的字段。此方法较为简单,企业中使用普遍。

2.ResultMap的实现:

1.sql语句(mapper.xml):

SELECT

orders.*,

user.username,

user.sex,

user.address

FROM

orders,

USER

WHERE orders.user_id = user.id

需要关联查询的是用户的信息,是通过association将用户信息映射到订单对象的用户属性中。

association:表示需要关联查询的单条记录

property:表示关联查询的结果存储在Order类中的User属性中。

javaType: 表示关联查询的结果映射类型。

2.pojo类:

在订单order类中添加用户user的属性,user属性中存储用于关联查询的用户信息,因为订单与用户是一对一关系,所以这里直接使用单个User对象存储关联查询的用户信息。

public class Orders {

private Integer id;

private Integer userId;

private String number;

private Date createtime;

private String note;

//用户信息

private User user;

3.mapper.java接口

/**

* 通过resultMap进行一对一查询

*/

public List findOrdersCustomResultMap();

4.小结

使用association完成关联查询,将结果映射到pojo属性对象中。

3.ResultType与ResultMap:

resultType:使用resultType实现较为简单,如果pojo中不包含查询出来的列名,需要增加类名对应的属性。即可完成映射。

如果没有特殊要求,建议使用resultType。

resultMap:需要单独定义ResultMap,实现较为麻烦。如果对查询结果有特殊要求,使用ResultMap可以实现将关联查询映射到pojo的属性对象中。

resultMap可以实现延迟加载,ResultType不能实现延迟加载。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值