3.14

idCard类封装数据库表tb_idcard的列名

package com.tokaiteio.pojo;

public class Person {
    private int id;
    private String name;
    private String sex;
    private IdCard card;//封装idcard的类型为idcard的类名

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public IdCard getCard() {
        return card;
    }

    public void setCard(IdCard card) {
        this.card = card;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", card_id='" + card + '\'' +
                '}';
    }
}

Person类封装数据库表tb_person的列名

package com.tokaiteio.pojo;

public class Person {
    private int id;
    private String name;
    private String sex;
    private IdCard card;//封装idcard的类型为idcard的类名

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public IdCard getCard() {
        return card;
    }

    public void setCard(IdCard card) {
        this.card = card;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", card_id='" + card + '\'' +
                '}';
    }
}

在resource文件夹中的mapper文件夹中创建映射文件

idCardMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tokaiteio.pojo.IdCard">
<!--    根据id查询证件信息-->
    <select id="findCodeById" parameterType="Integer" resultType="com.tokaiteio.pojo.IdCard">
        select*from tb_idcard where id=#{id}
    </select>
</mapper>

PersonMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tokaiteio.pojo.Person">
    <select id="findById" parameterType="Integer" resultMap="idCardResult">
<!--        嵌套查询:通过执行另外的语句返回结果-->
        select*from tb_person where id=#{id}
    </select>
<!--    下面的resultMap(结果集)的id与上面resultMap="idCardResult"相同 type为Person类路径-->
    <resultMap id="idCardResult" type="com.tokaiteio.pojo.Person">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="sex" column="sex"/>
<!--        一对一的关联 引入另外的sql语句 property="card"的card是Pojo包中Person类中封装的    private IdCard card;封装idcard的类型为idcard的类名
            column="card_id"的card_id对应查找tb_person表中的card_id列
            javaType="com.tokaiteio.pojo.IdCard"值为idCard类路径对应pojo包里面的idCard类
            select="com.tokaiteio.pojo.IdCard.findCodeById"的com.tokaiteio.pojo.IdCard.findCodeById对应idCardMapper.xml中的
            resultType="com.tokaiteio.pojo.IdCard"的com.tokaiteio.pojo.IdCard再加.findCodeById
-->
<!--        card指向person中封装的IdCard的card
            card_id去查找表中的card_id列的数值去匹配findCodeById查询方法的id
            com.tokaiteio.pojo.IdCard对应的是pojo包里面的类路径映射pojo包里面的idCard类
            com.tokaiteio.pojo.IdCard.findCodeById去idCardMapper.xml中使用查找方法findCodeById
-->
        <association property="card" column="card_id" javaType="com.tokaiteio.pojo.IdCard"
                     select="com.tokaiteio.pojo.IdCard.findCodeById"/>

    </resultMap>
</mapper>

在mybatis-config.xml中的<mappers>添加PersonMapper.xml和idCardMapper.xml路径

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 环境配置 -->
    <!-- 加载类路径下的属性文件 -->
    <properties resource="db.properties"/>
    <!--User类路径别名-->
    <typeAliases>
        <typeAlias type="com.tokaiteio.pojo.Customer" alias="Customer"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!-- 数据库连接相关配置 ,db.properties文件中的内容-->
            <dataSource type="POOLED">
                <property name="driver" value="${mysql.driver}"/>
                <property name="url" value="${mysql.url}"/>
                <property name="username" value="${mysql.username}"/>
                <property name="password" value="${mysql.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--配置mapper文件-->
    <mappers>
        <mapper resource="mapper\CustomerMapper.xml"/>
        <mapper resource="mapper\IdCardMapper.xml"/>
        <mapper resource="mapper\PersonMapper.xml"/>
    </mappers>

</configuration>

再在com.tokaiteio.test包中的MybatisTest类中写main方法

package com.tokaiteio.test;

//import com.sun.xml.internal.xsom.impl.scd.Iterators;
//import com.tokaiteio.pojo.Customer;

import com.tokaiteio.pojo.Person;
import com.tokaiteio.util.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
//import org.junit.jupiter.api.Test;

//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;

public class MybatisTest {
    public static void main(String[] args) {
        SqlSession session = MybatisUtils.getSession();
        Person p = session.selectOne("findById",2);
        System.out.println(p);
    }
}

 

posted @ 2023-03-14 15:52  Tokaitei32  阅读(61)  评论(0)    收藏  举报