mybatis中 一对一和一对多的配置封装

例如:
一个订单对应一个用户 (一对一)
一个用户对应多个订单(一对多)

一对一

第一步:在mabatis文件中配置别名,方便后续使用

    <!--自定义类别名-->
    <typeAliases>
        <typeAlias type="com.ermu.domain.User"  alias="user"/>
        <typeAlias type="com.ermu.domain.Order" alias="order"/>
    </typeAliases>

 
    <mappers>
        <package name="com.ermu.dao"/>
    </mappers>

第二步:创建对应的order实体类

public class Order {
    private int id;
    private String ordertime;
    private double total;

    private User  user ;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getOrdertime() {
        return ordertime;
    }

    public void setOrdertime(String ordertime) {
        this.ordertime = ordertime;
    }

    public double getTotal() {
        return total;
    }

    public void setTotal(double total) {
        this.total = total;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return "Order{" +
                "id=" + id +
                ", ordertime='" + ordertime + '\'' +
                ", total=" + total +
                ", user=" + user +
                '}';
    }
}

第三步:映射配置文件中的查询语句以及使用resultMap进行手动指定查询结果中:字段与实体属性的映射关系

<resultMap id="orderMap" type="order" >
		<!--手动指定字段与实体属性的映射关系-->
        <!--column :数据表的字段名称-->
        <!--property:实体的属性名称-->
        <!--主键-->
        <id column="oid" property="id"></id>
        
        <result column="ordertime" property="ordertime"></result>
        <result column="total" property="total"></result>
        
        <!--order实体类中所封装的User-->
		<!--property:当前实体order中的属性名称(private User  user)-->
        <!--javaType:当前实体order中属性的类型(User)-->
		<association property="user" javaType="user">
		<id column="uid" property="id"></id>
		<result column="username" property="username"></result>
		<result column="password" property="password"></result>
		<result column="birthday" property="birthday"></result>
        </association>   
</resultMap>
    <select id="findAll" resultMap="orderMap">
        select * ,o.id oid from orders o , user u  where  o.uid = u.id
    </select>

第四步 :测试

一对多

第一步:同上

第二步:创建User实体类

public class User {
    
        private Integer id;
        private String username;
        private String password;
        private Date birthday;
    
        //描述当前用户存在那些订单
        private List<Order> orderList;
    
    
        public List<Order> getOrderList() {
            return orderList;
        }
    
        public void setOrderList(List<Order> orderList) {
            this.orderList = orderList;
        }
    
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    ", birthday=" + birthday +
                    ", orderList=" + orderList +
                    '}';
        }
    }

第三步:映射配置文件中的查询语句以及使用resultMap进行手动指定查询结果中:字段与实体属性的映射关系

    <resultMap id="userMap" type="user">
        <id column="uid" property="id"></id>
        <result column="username" property="username"></result>
        <result column="password" property="password"></result>
        <result column="birthday" property="birthday"></result>

        <!--配置集合信息-->
        <!--property :集合名称-->
        <!--ofType:当前集合中的数据类型-->
        <collection property="orderList" ofType="order">
            <!--封装order数据-->
            <id column="oid" property="id"></id>
            <result column="ordertime" property="ordertime"></result>
            <result column="total" property="total"></result>
        </collection>
    </resultMap>

    <select id="findAll" resultMap="userMap">
       select * ,o.id oid from user u , orders o where u.id =o.uid
    </select>

第四步:测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值