
设计一个方法,根据pid查询这个人两个表格的所有信息
dao.PersonDao
package dao;import domain.Person;import org.apache.ibatis.session.SqlSession;import util.MySqlSessionFactory;public class PersonDao {private SqlSession sqlSession=MySqlSessionFactory.getSqlSession(true);//设计一个方法,根据pid查询这个人两个表格的所有信息public Person selectOne(Integer pid){return sqlSession.selectOne("selectOne",pid);}}
domain.IDCard
package domain;public class IDCard {//自有属性private String cardid;private String address;//为了根据身份证号查询 身份证和人的信息//多添加一个关联属性private Person person;public IDCard() {}public IDCard(String cardid, String address, Person person) {this.cardid = cardid;this.address = address;this.person = person;}@Overridepublic String toString() {return "IDCard{" +"cardid='" + cardid + '\'' +", address='" + address + '\'' +", person=" + person +'}';}public String getCardid() {return cardid;}public void setCardid(String cardid) {this.cardid = cardid;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}}
domain.Person
package domain;public class Person {//自有属性private Integer pid;private String pname;//关联属性 身份证号(身份证对象中的一个属性)private IDCard idcard;public Person() {}public Person(Integer pid, String pname, IDCard idcard) {this.pid = pid;this.pname = pname;this.idcard = idcard;}@Overridepublic String toString() {return "Person{" +"pid=" + pid +", pname='" + pname + '\'' +", idcard=" + idcard +'}';}public Integer getPid() {return pid;}public void setPid(Integer pid) {this.pid = pid;}public String getPname() {return pname;}public void setPname(String pname) {this.pname = pname;}public IDCard getIdcard() {return idcard;}public void setIdcard(IDCard idcard) {this.idcard = idcard;}}
mapper.PersonMapper.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//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 pid,pname,cardid from person where pid = #{pid}</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" select="selectIdCardForPerson" column="cardid"></association></resultMap><!--为了Person对象中的idcard属性再次查询用--><select id="selectIdCardForPerson" resultType="domain.IDCard">select * from idcard where cardid = #{cardid}</select></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&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);
}
}

