mybatis 05 对一关联

概念:

一个员工对应一个部门
员工类中包含一个部门属性

案例:

配置文件
myBatis-conf.xml

<!--别名-->
    <typeAliases>
        <typeAlias type="com.xxjqr.relation01.Emp" alias="Emp"/>
        <typeAlias type="com.xxjqr.relation01.Dept" alias="Dept"/>
    </typeAliases>

<!---关联配置文件-->
<mappers>

        <mapper resource="com/xxjqr/relation01/empMapper.xml"/>
        <mapper resource="com/xxjqr/relation01/deptMapper.xml"/>
</mappers>

deptMapper.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.xxjqr.relation01.deptMapper">

    <resultMap type="Dept" id="deptResultMap">
        <id column="dept_id" property="deptId"/>
        <result column="dept_name" property="deptName"/>
        <result column="dept_address" property="deptAddress"/>
    </resultMap>
    
</mapper>

empMapper.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.xxjqr.relation01.empMapper">

<resultMap type="Emp" id="empResultMap">

    <id column="emp_id" property="empId"/>
    
    <result column="emp_name" property="empName"/>
    <result column="emp_sex" property="empSex"/>
    <!-- 也可以使用javaType的方式,直接在当前配置文件中配置部门字段映射 -->
<!--    <association property="dept" javaType="com.xxjqr.relation01.Dept"> -->
<!--        <id column="dept_id" property="deptId"/> -->
<!--        <result column="dept_name" property="deptName"/> -->
<!--        <result column="dept_address" property="deptAddress"/> -->
<!--    </association> -->

    <association column="dept_id" property="dept" resultMap="com.xxjqr.relation01.deptMapper.deptResultMap"></association>
</resultMap>

<!-- sql查询语句;parameterType:查询参数类型;resultMap:返回结果类型 -->
<select id="selectEmpDeptList" parameterType="string" resultMap="empResultMap" >
    select e.*,d.* from emp_t e inner join dept_t d on e.dept_id = d.dept_id
    where e.emp_name = #{empName}
</select>

</mapper>

@Data
public class Dept {
    private int deptId;
    private String deptName;
    private String deptAddress;
}
@Data
public class Emp {
    private String empId;
    private String empName;
    private String empSex;
    private Dept dept;
}
public class UserDao {
    public List<Emp> selectList (String name){
        List<Emp> emps = null;
        SqlSession session = null;
        try {
            session = MybatisSessionFactory.getSession();
            emps = session.selectList("com.xxjqr.relation01.empMapper.selectEmpDeptList",name);
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                MybatisSessionFactory.closeSession();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        return emps;
    }
}
public class TestUserDao {
    private UserDao userDao = new UserDao();
    
    @Test
    public void test(){
        List<Emp> emps = null;
        emps = userDao.selectList("张无忌");
        System.out.println(emps);
    }
}

MybatisSessionFactory

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,797评论 19 139
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,165评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,187评论 18 399
  • 1 引言# 本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybait...
    七寸知架构阅读 76,826评论 36 979
  • 1.一大早做了清洁面膜和补水面膜,拿下面膜的那一刻仿佛皮肤好到爆炸,隔没多久照镜子,也还是那个样子。要是一直保持那...
    言言宝阅读 1,163评论 0 0