zoukankan      html  css  js  c++  java
  • 2020/1/2 踩的关于Mybatis查询及封装的几个坑

    1. 多表连接查询时  加括号

      <sql id="comEmpTables">
            (<include refid="empInfoTables"></include>,info_com_emp ce,data_job j)
    
            left join info_emp_train_history ieth on  i.id = ieth.empId
            left join info_emp_work_history iewh on  i.id  = iewh.empId
       </sql>

          不然会报1054错误

            错误代码: 1054

            Unknown column 'i.id' in 'on clause'

    2. 多表连接 查询出来多条数据 且有重复 如何进行封装

    SELECT 
     i.*
    ,ieth.trainYear,ieth.trainCon,ieth.trainHour,ieth.trainResult,ieth.trainDate,ieth.id AS tid
            ,iewh.workDate,iewh.workCom,iewh.workJob,iewh.workContent,iewh.id AS wid,i.id
    FROM
      info_employee i 
      LEFT JOIN info_emp_train_history ieth 
        ON i.id = ieth.empId 
      RIGHT JOIN info_emp_work_history iewh 
        ON i.id = iewh.empId 
    WHERE i.id = 28 

      四条数据都是属于一个人的   都有同一个id

      在总的resultMap中设置id 则该四条信息都会封装进一个对象 

    <resultMap id="empResult" type="qdlb.edu_dev.modules.info.pojo.infoPojo.EmpInfoResult" autoMapping="true">
            <id column="id" property="id"></id>
    <association property="employee" javaType="infoEmployee" > </association> <collection property="empTrainHistoryResults" resultMap="EmpTrainHistoryResult"> </collection> <collection property="empWorkHistoryResults" resultMap="EmpWorkHistoryResult"> </collection> </resultMap>

      

      在两个集合的resultMap中设置id

       则id不同的数据会只取重复中的一条封装进去

      id作为区分数据的关键,一个ID一条数据

      

      <resultMap id="EmpTrainHistoryResult" type="qdlb.edu_dev.modules.info.pojo.EmpTrainHistory.EmpTrainHistoryResult">
            <id column="tid" property="tid"></id>
            <result column="trainYear" property="trainYear"/>
            <result column="trainCon" property="trainCon"/>
            <result column="trainHour" property="trainHour"/>
            <result column="trainResult" property="trainResult"/>
            <result column="trainDate" property="trainDate"/>
        </resultMap>
        <resultMap id="EmpWorkHistoryResult" type="qdlb.edu_dev.modules.info.pojo.EmpWorkHistory.EmpWorkHistoryResult">
            <id column="wid" property="wid"></id>
            <result column="workDate" property="workDate"/>
            <result column="workCom" property="workCom"/>
            <result column="workJob" property="workJob"/>
            <result column="workContent" property="workContent"/>
        </resultMap>
  • 相关阅读:
    flask 使用Flask-SQLAlchemy管理数据库(连接数据库服务器、定义数据库模型、创建库和表) --
    flask 操作数据库(分类) --
    flask渲染模板时报错TypeError: 'UnboundField' object is not callable --
    flask用宏渲染表单模板时,表单提交后,如果form.validate_on_submit()返回的是false的可能原因 --
    flask 单个页面多个表单(单视图处理、多视图处理) --
    flask 单个表单多个提交按钮 --
    jython 2.7.1 版本开发历史
    TP v5中Url Compat模式
    乱弹
    改改"坏"代码
  • 原文地址:https://www.cnblogs.com/mkl7/p/12133502.html
Copyright © 2011-2022 走看看