image.png
    设计一个方法,根据pid查询这个人两个表格的所有信息
    dao.PersonDao

    1. package dao;
    2. import domain.Person;
    3. import org.apache.ibatis.session.SqlSession;
    4. import util.MySqlSessionFactory;
    5. public class PersonDao {
    6. private SqlSession sqlSession=MySqlSessionFactory.getSqlSession(true);
    7. //设计一个方法,根据pid查询这个人两个表格的所有信息
    8. public Person selectOne(Integer pid){
    9. return sqlSession.selectOne("selectOne",pid);
    10. }
    11. }

    domain.IDCard

    1. package domain;
    2. public class IDCard {
    3. //自有属性
    4. private String cardid;
    5. private String address;
    6. //为了根据身份证号查询 身份证和人的信息
    7. //多添加一个关联属性
    8. private Person person;
    9. public IDCard() {}
    10. public IDCard(String cardid, String address, Person person) {
    11. this.cardid = cardid;
    12. this.address = address;
    13. this.person = person;
    14. }
    15. @Override
    16. public String toString() {
    17. return "IDCard{" +
    18. "cardid='" + cardid + '\'' +
    19. ", address='" + address + '\'' +
    20. ", person=" + person +
    21. '}';
    22. }
    23. public String getCardid() {
    24. return cardid;
    25. }
    26. public void setCardid(String cardid) {
    27. this.cardid = cardid;
    28. }
    29. public String getAddress() {
    30. return address;
    31. }
    32. public void setAddress(String address) {
    33. this.address = address;
    34. }
    35. public Person getPerson() {
    36. return person;
    37. }
    38. public void setPerson(Person person) {
    39. this.person = person;
    40. }
    41. }

    domain.Person

    1. package domain;
    2. public class Person {
    3. //自有属性
    4. private Integer pid;
    5. private String pname;
    6. //关联属性 身份证号(身份证对象中的一个属性)
    7. private IDCard idcard;
    8. public Person() {}
    9. public Person(Integer pid, String pname, IDCard idcard) {
    10. this.pid = pid;
    11. this.pname = pname;
    12. this.idcard = idcard;
    13. }
    14. @Override
    15. public String toString() {
    16. return "Person{" +
    17. "pid=" + pid +
    18. ", pname='" + pname + '\'' +
    19. ", idcard=" + idcard +
    20. '}';
    21. }
    22. public Integer getPid() {
    23. return pid;
    24. }
    25. public void setPid(Integer pid) {
    26. this.pid = pid;
    27. }
    28. public String getPname() {
    29. return pname;
    30. }
    31. public void setPname(String pname) {
    32. this.pname = pname;
    33. }
    34. public IDCard getIdcard() {
    35. return idcard;
    36. }
    37. public void setIdcard(IDCard idcard) {
    38. this.idcard = idcard;
    39. }
    40. }

    mapper.PersonMapper.xml

    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. </mapper>

    configuration.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>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"></transactionManager>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/testmybatis?useSSL=false&amp;characterEncoding=UTF-8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="cy414ljh212,,,"/>
                </dataSource>
            </environment>
        </environments>
    
        <mappers>
            <mapper resource="mapper/PersonMapper.xml"></mapper>
        </mappers>
    </configuration>
    

    service.PersonService

    package service;
    
    import dao.PersonDao;
    import domain.Person;
    
    public class PersonService {
    
        private PersonDao dao = new PersonDao();
    
        public Person selectOne(Integer pid){
            return dao.selectOne(pid);
        }
    }
    

    test.TestMain

    package test;
    
    
    import service.PersonService;
    
    public class TestMain {
        public static void main(String[] args) {
            PersonService personService=new PersonService();
            System.out.println(personService.selectOne(1));
    
        }
    }
    

    util.MySqlSessionFactory

    package util;
    
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.InputStream;
    
    public class MySqlSessionFactory {
        //设计一个方法,获取SqlSession对象
        private static SqlSessionFactory factory;
        private static SqlSession sqlSession;
        static {
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            factory = builder.build(Thread.currentThread().getContextClassLoader().getResourceAsStream("configuration.xml"));
        }
    
        //设计一个方法 获取sqlSession对象
        public static SqlSession getSqlSession(){
            return getSqlSession(false);
        }
        public static SqlSession getSqlSession(boolean flag){
            return factory.openSession(flag);
        }
    }
    

    image.png