MyBatis框架中级联操作

时间:2020-11-01 22:40 作者:songsongsong 阅读数:192

  实际开发中,操作的表不是一个独立的个体,他们往往根据业务依赖关系,形成一对一,一对多,多对多的关联关系。为了保证业务数据的完整性

我们往往要在多张表中抽取数据,这样的操作称为级联操作


 级联操作分为:级联查询、级联删除、级联更新、级联添加

 级联查询:一对多查询(在查询一方表的时候把与其所关联的多方表的数据检索出来)

           多对一查询(在查询多方表时查询出他所隶属的一方表的数据)

           多对多查询(实际上就是对一对多查询的特殊体现形式)

           

1.一对多查询  (如部门表与职员表需检索部门下面所有的职员 部门实体类Dept.java 职员实体类Employee.java)


在部门实体类Dept.java中追加一项实体类


  private List<Employee> empList;//表示隶属于当前部门下所有职员集合,并为empList匹配相应的set与get方法  

   



在DeptMapper.xml中

  <resultMap type="dept" id="deptMap">//设置自己的对应关系

   <id cloumn="dept_deptNo" property="deptNo"/>

   <result column="dname" property="dname"/>

   <result clomn="loc" property+"loc"/>


    //collection 标签中column属性应该填写,查询临时表中来自一方表主键字段名


    <collection property="empList" ofType="empLoyee" column="dept_deptno">

      <id column="empno" property="empNo"></id>

      <result column="ename" property="ename"/>

  </collection>

</resultMap>

  <!--查询当前部门下所有的职员名称以及当前部门基本信息-->

做内连接查询处理

  <select id="deptFindId" resultMap="deptMap">//此时就不适合使用resultType


   ?????

</select>


在MySql的sql编辑器中写入

  select dept.deptno dept_deptno,

       dname,

       loc,

       empno,ename,job,sal

  From dept join emp

  on dept.deptno = emp.deptno

  where dept.deptno=#{deptno}

测试sql语句是否成立,若成立则粘贴到<select>??中



在DeptMapper.java中写入


  public Dept deptFindById(int deptno);



测试TestMain.java写入

 @Test

 public void test(){

   DeptMapper dao = session.getMapper(DeptMapper.class);

   Dept dept=dao.deptFindById(10)

   System.out.pritln();


}

  



推荐文章

[推荐] .NET Core 学习资料精选:入门

[推荐] 数据库常见死锁原因及处理

[推荐] C# 设置Excel数据自适应行高、列宽的2种情况 (转)

[推荐] C++ vector 和set结合数字去重练习

[推荐] win7 .net core 部署 The library hostfxr.dll was found, but loading it from C:\<path_to_app>\hostfxr.dll failed

[推荐] JdbcTemplate多数据源使用

[推荐] asp.net core系列 67 Web压力测试工具WCAT

[推荐] 第七天 让你的container实现跨主机访问

[推荐] .Net Core 2.0 获取客户端IP地址

[推荐] 深入学习Redis(2):持久化

[推荐] 8天玩转并行开发——第八天 用VS性能向导解剖你的程序

[推荐] asp.net core系列 33 EF查询数据 (2)

[推荐] nodejs app.use(express.static) 静态文件托管 (四)

[推荐] C++ Lambda表达式练习

[推荐] C++ 稀疏表的练习

[推荐] Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践

[推荐] 试试发布

[推荐] JavaWeb-Log4j: WARN No appenders could be found for logger

[推荐] C++中 *p++ 到底是 *(p++) 还是 (*p)++ 1. 猜想

[推荐] C++ 模板练习


评论列表



注册用户登录后才能发表评论,请登录注册,访问 博客首页