自定义映射resultMap(自定义映射游戏按键)

  本篇文章为你整理了自定义映射resultMap(自定义映射游戏按键)的详细内容,包含有自定义映射app 自定义映射游戏按键 自定义映射键鼠 自定义映射solidworks到dxf/dwg 自定义映射resultMap,希望能帮助你了解 自定义映射resultMap。

  resultMap处理字段和属性的映射关系

  如果字段名与实体类中的属性名不一致,该如何处理映射关系?

  
第一种方法:为查询的字段设置别名,和属性名保持一致

  下面是实体类中的属性名:

  

 private Integer empId;

 

   private String empName;

   private Integer age;

   private String gender;

  

 

  这是建表时设置的字段名:

  

emp_id emp_name age gender

 

  

 

  我们只需要在Mapper.xml中在写sql语句时,对字段名进行设置别名,使得与属性名一致:

  

 select emp_id empId,emp_name empName,age,gender from t_emp where emp_id = #{empId}

 

  

 

  
第二种方法:当字段符合Mysql要求使用下划线,而属性名符合Java要求使用驼峰,此时可以在Mybatis的核心配置文件中设置一个全局配置信息mapUnderscoreToCamelCase,就可以在查询表中数据时,自动将下划线类型的字段名转换为驼峰。

  

 settings 

 

   !--将下划线映射为驼峰--

   setting name="mapUnderscoreToCamelCase" value="true"/

   /settings

  

 

  
result:处理普通字段和实体类中属性的映射关系

   column:设置映射关系中的字段名,必须是sql查询出的某个字段

   property:设置映射关系中的属性的属性名,必须是处理实体类型类型中的属性名

   resultMap id="empResultMap" type="Emp"

   id column="emp_id" property="empId" /id

   result column="emp_name" property="empName" /result

   result column="age" property="age" /result

   result column="gender" property="gender" /result

   /resultMap

  

 

 

  

 

 

   !-- Emp getEmpByEmpId(@Param("empId") Integer emId);--

   select id="getEmpByEmpId" resultMap="empResultMap"

   select * from t_emp where emp_id = #{empId}

   /select

  

 

  
1.级联方式处理映射关系

  当Emp实体类中具有Dept对象,但是字段中不存在这个属性,我们需要将Dept对象中的属性与查询的字段名建立映射关系。

  

 resultMap id="empAndDeptResultMap" type="Emp" 

 

   id column="emp_id" property="empId" /id

   result column="emp_name" property="empName" /result

   result column="age" property="age" /result

   result column="gender" property="gender" /result

   result column="dept_id" property="dept.deptId" /result

   result column="dept_name" property="dept.deptName" /result

   /resultMap

  

 

  

 select id="getEmpAndDeptByEmpId" resultMap="empAndDeptResultMap" 

 

   select t_emp.*,t_dept.*

   from t_emp left join t_dept on t_emp.dept_id = t_dept.dept_id

   where t_emp.emp_id = #{empId}

   /select

  

 

  2.使用association处理映射关系

  association:处理多对一的映射关系(处理实体类类型的属性)

  property:设置需要处理映射关系的属性的属性名

  javaType:设置要处理的属性的类型

  

 resultMap id="empAndDeptResultMap" type="Emp" 

 

   id column="emp_id" property="empId" /id

   result column="emp_name" property="empName" /result

   result column="age" property="age" /result

   result column="gender" property="gender" /result

   association property="dept" javaType="Dept"

   id column="dept_id" property="deptId" /id

   result column="dept_name" property="deptName" /result

   /association

   /resultMap

  

 

  3.分步查询

  
resultMap id="empAndDeptByStepResultMap" type="Emp"

   id column="emp_id" property="empId" /id

   result column="emp_name" property="empName" /result

   result column="age" property="age" /result

   result column="gender" property="gender" /result

   select:设置分步查询,查询某个属性的值的sql标识(namespace.sqlId)

   column:将sql以及查询结果中的某个字段设置为分步查询的条件

   association property="dept"

   select="com.atguigu.mybatis.mapper.DeptMapper.getEmpAndDeptByStepTwo"

   column="dept_id" /association

   /resultMap

   !-- Emp getEmpAndDeptByStepOne(@Param("empId") Integer empId);--

   select id="getEmpAndDeptByStepOne" resultMap="empAndDeptByStepResultMap"

   select * from t_emp where emp_id = #{empId}

   /select

  

 

 

  


 !-- Dept getEmpAndDeptByStepTwo(@Param("deptId") Integer deptId);-- 

 

   select id="getEmpAndDeptByStepTwo" resultType="Dept"

   select * from t_dept where depy_id = #{deptId}

   /select

  

 

  
分步查询的优点:可以实现延迟加载,但是必须在核心配置文件中设置全局配置信息:

  lazyLoadingEnabled:延迟加载的全局开关,当开启时,所有关联对象都会延迟加载。

  aggressiveLazyLoading:当开启时,任何方法的调用都会加载该对象的所有属性。否则,每个属性会按需加载

  此时就可以实现按需加载,获取的数据是什么,就会执行相应的sql。此时可通过association和collection中的fetchType属性设置当前的分步查询是否使用延迟加载。

  


 resultMap id="deptAndEmpResultMap" type="Dept" 

 

   id column="dept_id" property="deptId" /id

   result column="dept_name" property="deptName" /result

   ofType:设置collection标签所处理的集合属性中存储数据的类型

   collection property="emps" ofType="Emp"

   id column="emp_id" property="empId" /id

   result column="emp_name" property="empName" /result

   result column="age" property="age" /result

   result column="gender" property="gender" /result

   /collection

   /resultMap

  

 

  

 !--Dept getDeptAndEmpByDeptId(@Param("deptId") Integer deptId);-- 

 

   select id="getDeptAndEmpByDeptId" resultMap="deptAndEmpResultMap"

   select *

   from t_dept

   LEFT JOIN t_emp

   ON t_dept.dept_id = t_emp.dept_id

   WHERE t_dept.dept_id = #{deptId};

   /select

  

 

  2.分步查询

  


 resultMap id="deptAnEmpResultMapByStep" type="Dept" 

 

   id column="dept_id" property="depyId" /id

   result column="dept_name" property="deptName" /result

   collection property="emps"

   select="com.atguigu.mybatis.mapper.EmpMapper.getDeptAndEmpByStepTwo"

   column="dept_id" /collection

   /resultMap

  

 

  

 !-- Dept getDeptAndEmpByStepOne(@Param("id") Integer id);-- 

 

   select id="getDeptAndEmpByStepOne" resultMap=""

   select * from t_dept where dept_id = #{deptId}

   /select

  

 

  


 resultMap id="empAndDeptByStepResultMap" type="Emp" 

 

   id column="emp_id" property="empId" /id

   result column="emp_name" property="empName" /result

   result column="age" property="age" /result

   result column="gender" property="gender" /result

   association property="dept"

   select="com.atguigu.mybatis.mapper.DeptMapper.getEmpAndDeptByStepTwo"

   column="dept_id" /association

   /resultMap

  

 

  

 !--List Emp getDeptAndEmpByStepTwo(@Param("dept_id") Integer dept_id);-- 

 

   select id="getDeptAndEmpByStepTwo" resultType="Emp"

   select * from t_emp where dept_id = #{deptId}

   /select

  

 

  以上就是自定义映射resultMap(自定义映射游戏按键)的详细内容,想要了解更多 自定义映射resultMap的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: