使用mybatis封装结果集

单表查询

作用:

在数据库中命名字段名的时候经常会使用到下划线 "_",然而在实体类中往往不写下划线,所以可以使用mybatis对其进行封装

注意:

resultMap的id要与select语句中的resultMap相对应

property为实体类表中的字段名字,column为数据库中的字段名

示例:

<resultMap id="DeptMap" type="Dept">
    <id property="id" column="id"></id>
    <result property="dname" column="d_name"></result>
    <result property="loc" column="loc"></result>
</resultMap>
<select id="selectAll" resultMap="DeptMap">
    select * from dept
</select>

多表查询

一对一

示例:

现在有Card和Person两个实体类

public class Card {
    private int id;
    private String number;
    private int pid;
    private Person p;
}
public class Person {
    private int id;
    private String name;
    private int age;
}

现在对这两个表进行一对一查询

注意:

resultMap的id要与select语句中的resultMap相对应

property为实体类表中的字段名字,column为数据库中的字段名

一对一:在resultMap下添加person中封装的对象,使用association进行封装,association(一对一)中的property属性的值为person中封装的对象

 示例:

<mapper namespace="com.chen.mapper.CardMapper">
    <resultMap id="One" type="com.chen.pojo.Card">
        <id property="id" column="id" ></id>
        <result property="number" column="number"></result>
        <result property="pid" column="pid"></result>

        <association property="p" javaType="com.chen.pojo.Person">
            <result column="id" property="id"></result>
            <result column="name" property="name"></result>
            <result column="age" property="age"></result>
        </association>
    </resultMap>
    <select id="findAll" resultMap="One">
        select person.name,person.age,card.number
        from card,person
        where card.pid=person.id
    </select>
</mapper>

一对多

联合的表:

Classes中需要有Student的对象

private Student students;

示例:

  Classes类:

public class Classes {
    private Integer id;
    private String  name;
    private Student students;
}

 Student类

public class Student {
    private Integer id;
    private String name;
    private Integer age;
    private Integer cid;
}

注意:

resultMap的id要与select语句中的resultMap相对应

property为实体类表中的字段名字,column为数据库中的字段名

在resultMap下的property属性的值为Classes中封装的对象,collection下的是Student类中封装的对象,一对多使用collection进行封装,

示例:

<mapper namespace="com.chen.mapper.ClassesMapper">
    <resultMap id="OneToMany" type="com.chen.pojo.Classes">
        <id property="id" column="id" ></id>
        <result property="name" column="name"></result>
        <collection property="students" javaType="com.chen.pojo.Student">
            <result column="id" property="id"></result>
            <result column="name" property="name"></result>
            <result column="age" property="age"></result>
            <result column="cid" property="cid"></result>
        </collection>

    </resultMap>
    <select id="selectBy" resultMap="OneToMany">
        SELECT s.`id`,s.`NAME`,s.`age`,c.`id`,c.`NAME`
        FROM classes c,student s
        WHERE s.`cid`=c.`id`
          AND s.`NAME`=#{name}
    </select>
</mapper>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值