设计一个方法,查询全部人两个表格的所有信息
    只展示PersonDao和PersonMapper.xml内容,其余代码和上一文档一样

    1. //设计一个方法,查询全部人两个表格的所有信息
    2. public List<Person> selectAll(){
    3. return sqlSession.selectList("selectAll");
    4. }
    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="dao.PersonDao">
    6. <!-- <select id="selectOne" resultMap="selectPerson">-->
    7. <!-- select pid,pname,cardid from person where pid = #{pid}-->
    8. <!-- </select>-->
    9. <!--自定义一个赋值的规则-->
    10. <resultMap id="selectPerson" type="domain.Person">
    11. <!--id一般用于主键列,result是普通列-->
    12. <id property="pid" column="pid"></id>
    13. <result property="pname" column="pname"></result>
    14. <association property="idcard" javaType="domain.IDCard" select="selectIdCardForPerson" column="cardid"></association>
    15. </resultMap>
    16. <!--为了Person对象中的idcard属性再次查询用-->
    17. <select id="selectIdCardForPerson" resultType="domain.IDCard">
    18. select * from idcard where cardid = #{cardid}
    19. </select>
    20. <select id="selectAll" resultMap="selectPerson">
    21. select pid,pname,cardid from person
    22. </select>
    23. </mapper>

    image.png
    执行底层数据库查询的时候 希望打印SQL语句
    导入log4j.jar 还需要自己手写一个配置文件 log4j.properties(放在与configuration.xml同一层次)
    image.png
    image.png

    <configuration>
        <settings>
            <!--开启延迟加载的机制,关联对象可以延迟加载-->
            <setting name="lazyLoadingEnabled" value="true"/>
            <!--关闭对象的侵略性,不用就不需要加载,用到了关联对象的任意属性就加载-->
            <setting name="aggressiveLazyLoading" value="false"/>
        </settings>
    </configuration>
    

    联合查询—根据pid查询这个人两个表格的所有信息—查询全部人两个表格的所有信息
    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="dao.PersonDao">
    
        <select id="selectOne" resultMap="selectPerson">
            select p.pid,p.pname,i.cardid,i.address from person p inner join idcard i
                on p.cardid = i.cardid where p.pid = #{pid}
        </select>
    
        <select id="selectAll" resultMap="selectPerson">
            select p.pid,p.pname,i.cardid,i.address from person p inner join idcard i
                on p.cardid = i.cardid
        </select>
    
        <!--自定义一个赋值的规则-->
        <resultMap id="selectPerson" type="domain.Person">
            <!--id一般用于主键列,result是普通列-->
            <id property="pid" column="pid"></id>
            <result property="pname" column="pname"></result>
            <association property="idcard" javaType="domain.IDCard">
                <id property="cardid" column="cardid"></id>
                <result property="address" column="address"></result>
            </association>
        </resultMap>
    
    </mapper>