Mybatis使用ResultType实现一对一关系详解(二)
2018-03-23 10:55
597 查看
首先数据库的创建 如图
user表属性
orders表属性
进行主外键关联如图
这样数据库就设计好了 测试一下
测试成功 创建bean类 User.javapackage com.hp.bean;
import java.util.List;
public class User {
//用户表
private Integer id;
private String name;
private int ses;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSes() {
return ses;
}
public void setSes(int ses) {
this.ses = ses;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", ses=" + ses + "]";
}
}
orders.java
package com.hp.bean;
import java.util.List;
public class Orders {
//商品订单表
private Integer o_id;
private String o_name;
private Integer u_id;
//用户表
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Integer getO_id() {
return o_id;
}
public void setO_id(Integer o_id) {
this.o_id = o_id;
}
public String getO_name() {
return o_name;
}
public void setO_name(String o_name) {
this.o_name = o_name;
}
public Integer getU_id() {
return u_id;
}
public void setU_id(Integer u_id) {
this.u_id = u_id;
}
}
接下来 创建返回的pojo类型 OrderCustom.java 继承User表 下面来写订单表的属性 用于映射
package com.hp.pojo;
import com.hp.bean.Orders;
import com.hp.bean.User;
//输出映射
public class OrderCustom extends User{
//o_id,o_name
private Integer o_id;
private String o_name;
public Integer getO_id() {
return o_id;
}
public void setO_id(Integer o_id) {
this.o_id = o_id;
}
public String getO_name() {
return o_name;
}
public void setO_name(String o_name) {
this.o_name = o_name;
}
@Override
public String toString() {
return "OrderCustom [o_id=" + o_id + ", o_name=" + o_name + "]";
}
}
mapper.xml
<!-- 使用resultType 进行订单查询用户信息 -->
<select id="FindAllOrder" resultType="com.hp.pojo.OrderCustom">
select id,name,ses,o_id,o_name from orders,USER WHERE orders.u_id=user.id
</select>
mapper.java
public List<OrderCustom> FindAllOrder();
测试结果如图
总结一下 ResultType和ResultMap实现一对一查询
ResultType:实现一对一较为简单,如果pojo没有需要的列名,则需要在poojo添加属性即可完成映射.
ResultMap:需要单独定义resultMap,实现起来有点麻烦,如果对查询结果有特殊的要求,使用resultMap可以完成将查询的结果关联到pojo的属性中,可以实现延迟加载,但ResultType不能实现延迟加载.
user表属性
orders表属性
进行主外键关联如图
这样数据库就设计好了 测试一下
测试成功 创建bean类 User.javapackage com.hp.bean;
import java.util.List;
public class User {
//用户表
private Integer id;
private String name;
private int ses;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSes() {
return ses;
}
public void setSes(int ses) {
this.ses = ses;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", ses=" + ses + "]";
}
}
orders.java
package com.hp.bean;
import java.util.List;
public class Orders {
//商品订单表
private Integer o_id;
private String o_name;
private Integer u_id;
//用户表
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Integer getO_id() {
return o_id;
}
public void setO_id(Integer o_id) {
this.o_id = o_id;
}
public String getO_name() {
return o_name;
}
public void setO_name(String o_name) {
this.o_name = o_name;
}
public Integer getU_id() {
return u_id;
}
public void setU_id(Integer u_id) {
this.u_id = u_id;
}
}
接下来 创建返回的pojo类型 OrderCustom.java 继承User表 下面来写订单表的属性 用于映射
package com.hp.pojo;
import com.hp.bean.Orders;
import com.hp.bean.User;
//输出映射
public class OrderCustom extends User{
//o_id,o_name
private Integer o_id;
private String o_name;
public Integer getO_id() {
return o_id;
}
public void setO_id(Integer o_id) {
this.o_id = o_id;
}
public String getO_name() {
return o_name;
}
public void setO_name(String o_name) {
this.o_name = o_name;
}
@Override
public String toString() {
return "OrderCustom [o_id=" + o_id + ", o_name=" + o_name + "]";
}
}
mapper.xml
<!-- 使用resultType 进行订单查询用户信息 -->
<select id="FindAllOrder" resultType="com.hp.pojo.OrderCustom">
select id,name,ses,o_id,o_name from orders,USER WHERE orders.u_id=user.id
</select>
mapper.java
public List<OrderCustom> FindAllOrder();
测试结果如图
总结一下 ResultType和ResultMap实现一对一查询
ResultType:实现一对一较为简单,如果pojo没有需要的列名,则需要在poojo添加属性即可完成映射.
ResultMap:需要单独定义resultMap,实现起来有点麻烦,如果对查询结果有特殊的要求,使用resultMap可以完成将查询的结果关联到pojo的属性中,可以实现延迟加载,但ResultType不能实现延迟加载.
相关文章推荐
- MyBatis Review——使用resultType和resultMap实现一对一查询
- MyBatis Review——使用resultType和resultMap实现一对一查询
- MyBatis一对一查询使用ResultType映射
- Mybatis学习笔记(6)--一对一的关联使用resultType输出类型
- mybatis 一对一关系取值association 通过resultMap实现
- mybatis0202 一对一查询 resultType实现
- mybatis进阶(2)--一对一查询(使用resultType)
- MyBatis一对一查询使用ResultType映射
- mybatis使用resultMap实现多对多查询 (需求:商品信息和订单明细有多对多的关系)
- MyBatis的一级缓存实现详解 及使用注意事项
- JavaEE_Mybatis_SpringMVC_Mybatis_lesson11_一对一关联映射(ResultMap/ResultType)
- MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
- MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
- 使用ResultType处理mybatis多表通过外键查询
- 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项
- mybatis 使用resultMap实现关联数据的查询(association 和collection )
- MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
- 17_高级映射:一对一查询(使用resultType)
- Mybatis - 高级映射 (复习,数据表分析,一对一 之 resultType )