1 准备两张表employee_basic(员工信息表),employee_school(员工学历表)
2 在两张表中写入部分测试数据
3 创建pojo实体类
package com.zxf.pojo;
import java.io.Serializable;
public class Employee implements Serializable {
private String emp_no;
private String emp_name;
private String dept_id;
private String emp_gender;
private String emp_email;
//员工基本情况表和员工学历表是一对一的关系,每一个员工有且只有一份学历表
private EmployeeSchool employeeSchool;
public String getEmp_no() {
return emp_no;
}
public void setEmp_no(String emp_no) {
this.emp_no = emp_no;
}
public String getEmp_name() {
return emp_name;
}
public void setEmp_name(String emp_name) {
this.emp_name = emp_name;
}
public String getDept_id() {
return dept_id;
}
public void setDept_id(String dept_id) {
this.dept_id = dept_id;
}
public String getEmp_gender() {
return emp_gender;
}
public void setEmp_gender(String emp_gender) {
this.emp_gender = emp_gender;
}
public String getEmp_email() {
return emp_email;
}
public void setEmp_email(String emp_email) {
this.emp_email = emp_email;
}
public EmployeeSchool getEmployeeSchool() {
return employeeSchool;
}
public void setEmployeeSchool(EmployeeSchool employeeSchool) {
this.employeeSchool = employeeSchool;
}
}
package com.zxf.pojo;
import java.io.Serializable;
public class EmployeeSchool implements Serializable {
private String emp_id;
private String emp_xueli;
private String emp_major;
private String by_date;
private String by_school;
public String getEmp_id() {
return emp_id;
}
public void setEmp_id(String emp_id) {
this.emp_id = emp_id;
}
public String getEmp_xueli() {
return emp_xueli;
}
public void setEmp_xueli(String emp_xueli) {
this.emp_xueli = emp_xueli;
}
public String getEmp_major() {
return emp_major;
}
public void setEmp_major(String emp_major) {
this.emp_major = emp_major;
}
public String getBy_date() {
return by_date;
}
public void setBy_date(String by_date) {
this.by_date = by_date;
}
public String getBy_school() {
return by_school;
}
public void setBy_school(String by_school) {
this.by_school = by_school;
}
}
3 编写Mapper层的数据库操作接口类
package com.zxf.mapper;
import com.zxf.pojo.EmployeeSchool;
public interface EmployeeSchoolMapper {
public EmployeeSchool selectEmployeeSchoolById(String emp_id);
}
4 编写对应接口的Mybatis的映射配置文件
<?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.zxf.mapper.EmployeeMapper">
<!-- 根据 emp_no 查询 Employee,返回 resultMap -->
<select id="selectEmployeeById" parameterType="String" resultMap="employeeMap">
SELECT * FROM employee_basic WHERE emp_no=#{id}
</select>
<!-- 映射 Employee 对象的resultMap -->
<resultMap id="employeeMap" type="Employee">
<id property="emp_no" column="emp_no"></id>
<result property="emp_name" column="emp_name"></result>
<result property="dept_id" column="dept_id"></result>
<result property="emp_gender" column="emp_gender"></result>
<result property="emp_email" column="emp_email"></result>
<!-- 一对一关联映射:association -->
<association property="employeeSchool" column="emp_no"
select="com.zxf.mapper.EmployeeSchoolMapper.selectEmployeeSchoolById"
javaType="EmployeeSchool"/>
</resultMap>
</mapper>
<?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.zxf.mapper.EmployeeSchoolMapper">
<select id="selectEmployeeSchoolById" resultType="EmployeeSchool" parameterType="string">
SELECT * from employee_school WHERE emp_id=#{emp_id}
</select>
</mapper>
5 编写Mybatis的核心数据库资源配置文件
<?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="jdbc.properties"/>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<typeAliases>
<package name="com.zxf.pojo"/>
</typeAliases>
<!-- default引用environment的id,当前所使用的环境 -->
<environments default="abc">
<environment id="abc">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="com.zxf.mapper.EmployeeSchoolMapper"/>
<mapper class="com.zxf.mapper.EmployeeMapper"/>
</mappers>
</configuration>
数据库属性文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.0.148:3306/test
jdbc.user=root
jdbc.password=abc123
6 编写测试程序
package com.zxf;
import com.zxf.mapper.EmployeeMapper;
import com.zxf.mapper.EmployeeSchoolMapper;
import com.zxf.mapper.TeacherMapper;
import com.zxf.pojo.Employee;
import com.zxf.pojo.EmployeeSchool;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.InputStream;
public class Test6 {
private SqlSessionFactory sqlSessionFactory;
private SqlSession session;
//private EmployeeSchoolMapper employeeSchoolMapper;
private EmployeeMapper employeeMapper;
private InputStream is;
@Before //用于测试方法之前执行。
public void init() throws Exception{
is= Resources.getResourceAsStream("zhangMyBatis.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
session=sqlSessionFactory.openSession();
employeeMapper=session.getMapper(EmployeeMapper.class);
}
@After //用于测试方法之后执行。
public void destory()throws Exception{
session.commit();
session.close();
is.close();
}
/*
@Test
public void test1(){
EmployeeSchool employeeSchool = employeeSchoolMapper.selectEmployeeSchoolById("HW9808");
System.out.println(employeeSchool.getEmp_xueli()+","+employeeSchool.getBy_school()+","+employeeSchool.getEmp_major());
}
*/
@Test
public void test2(){
Employee employee = employeeMapper.selectEmployeeById("HW9806");
System.out.println(employee.getEmp_name()+","+employee.getEmployeeSchool().getBy_school());
}
}
例如查询员工编号为HW9806的学历和名字