当前位置: 首页 > news >正文

Java学习-MyBatis学习(四)

代码下载

解决字段名与属性名不一致
  • ①使用别名emp_name empName解决字段名和属性名不一致
<select id="getAllEmpOld" resultType="Emp"><!--①使用别名emp_name empName解决字段名和属性名不一致-->select eid,emp_name empName,age,sex,email from t_emp;</select>
  • ②在全局配置文件中添加全局配置
<settings><!-- 将_自动映射为驼峰,emp_name:empName--><setting name="mapUnderscoreToCamelCase" value="true"/></settings>
  • ③使用resultMap
<!--resultMap:设置自定义映射关系id:唯一标识type:设置映射关系中的实体类类型id:设置主键属性:property:设置映射关系中的属性名,必须是type属性所设置的实体类类型中的属性名column:设置映射关系中的字段名,必须是SQL语句查询出的字段名--><resultMap id="empResultMap" type="Emp"><id property="eid" column="eid"/><id property="empName" column="emp_name"/><id property="age" column="age"/><id property="sex" column="sex"/><id property="email" column="email"/></resultMap><!--③使用resultMap解决字段名和属性名不一致--><select id="getAllEmp" resultMap="empResultMap">select * from t_emp;</select>
多对一映射关系
  • ①级联属性赋值
 <resultMap id="empAndDeptResultMapOne" type="Emp"><id property="eid" column="eid"/><id property="empName" column="emp_name"/><id property="age" column="age"/><id property="sex" column="sex"/><id property="email" column="email"/><id property="dept.did" column="did"/><id property="dept.deptName" column="dept_name"/></resultMap><!--Emp getEmpAndDept(@Param("eid") Integer eid);--><select id="getEmpAndDept" resultMap="empAndDeptResultMapOne">select * from t_emp left join t_dept on t_emp.did = t_dept.did where t_emp.eid=#{eid}</select>
  • ②使用association
<resultMap id="empAndDeptResultMapTwo" type="Emp"><id property="eid" column="eid"/><id property="empName" column="emp_name"/><id property="age" column="age"/><id property="sex" column="sex"/><id property="email" column="email"/><!-- association:处理多对一的映射关系javaType:该属性的类型--><association property="dept" javaType="Dept"><id property="did" column="did"/><id property="deptName" column="dept_name"/></association></resultMap><!--Emp getEmpAndDept(@Param("eid") Integer eid);--><select id="getEmpAndDept" resultMap="empAndDeptResultMapTwo">select * from t_emp left join t_dept on t_emp.did = t_dept.did where t_emp.eid=#{eid}</select>
<mapper namespace="com.lotus.mybatis.mapper.DeptMapper"><!--Dept getEmpAndDeptByStepTwo(@Param("did") Integer did);--><select id="getEmpAndDeptByStepTwo" resultType="Dept">select * from t_dept where did=#{did}</select>
</mapper>
  • ③分步查询
<resultMap id="empAndDeptByStepResultMap" type="Emp"><id property="eid" column="eid"/><id property="empName" column="emp_name"/><id property="age" column="age"/><id property="sex" column="sex"/><id property="email" column="email"/><!--select:设置分步查询的SQL唯一标识(namespace,SQLID或mapper接口的全类名.方法名)column:设置分步查询的条件fetchType(eager|lazy):当开启全局延迟加载后,通过此属性手动控制延迟加载的效果,eager表示立即加载--><association property="dept" select="com.lotus.mybatis.mapper.DeptMapper.getEmpAndDeptByStepTwo"column="did" fetchType="eager"></association></resultMap><!-- Emp getEmpAndDeptByStepOne(); --><select id="getEmpAndDeptByStepOne" resultMap="empAndDeptByStepResultMap">select * from t_emp where eid=#{eid}</select>
public interface EmpMapper {
/*** 通过分步查询查询员工以及员工所对应部门信息* 第一步,查询员工信息*/Emp getEmpAndDeptByStepOne(@Param("eid") Integer eid);}public interface DeptMapper {/*** 通过分步查询查询员工以及员工所对应部门信息* 第一步,通过did查询员工对应的部门信息*/Dept getEmpAndDeptByStepTwo(@Param("did") Integer did);
}
一对多映射关系
  • ①使用collection标签
 <resultMap id="deptAndEmpResultMap" type="Dept"><id property="did" column="did"/><id property="deptName" column="dept_name"/><collection property="emps" ofType="Emp"><id property="eid" column="eid"/><id property="empName" column="emp_name"/><id property="age" column="age"/><id property="sex" column="sex"/><id property="email" column="email"/></collection></resultMap><!--Dept getDeptAndEmp(@Param("did") Integer did);--><select id="getDeptAndEmp" resultMap="deptAndEmpResultMap">select * from t_dept left join t_emp on t_dept.did = t_emp.did where t_dept.did=#{did}</select>
/*** 获取部门及部门中所有员工信息*/Dept getDeptAndEmp(@Param("did") Integer did);
//测试代码@Testpublic void testGetDeptAndEmp() {SqlSession sqlSession = SqlSessionUtils.getSqlSession();DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);Dept dept = mapper.getDeptAndEmp(1);System.out.println(dept);}
  • ②使用分步查询
<!---DeptMapper.xml>
<resultMap id="deptAndEmpByStepResultMap" type="Dept"><id property="did" column="did"/><result property="deptName" column="dept_name"/><collection property="emps"select="com.lotus.mybatis.mapper.EmpMapper.getDeptAndEmpByStepTwo"column="did"></collection></resultMap><!--Dept getDeptAndEmpByStepOne(@Param("did") Integer did);--><select id="getDeptAndEmpByStepOne" resultMap="deptAndEmpByStepResultMap">select * from t_dept where did=#{did}</select>
<!-- EmpMapper.xml -->
<!--List<Emp> getDeptAndEmpByStepTwo(@Param("did") Integer did);--><select id="getDeptAndEmpByStepTwo" resultType="Emp">select * from t_emp where did=#{did}</select>
//----DeptMapper
/*** 分步查询①查询部门信息*/Dept getDeptAndEmpByStepOne(@Param("did") Integer did);
//----EmpMapper
/*** 分步查询②根据did查询员工信息*/
List<Emp> getDeptAndEmpByStepTwo(@Param("did") Integer did);//测试代码@Testpublic void testGetDeptAndEmpStep() {SqlSession sqlSession = SqlSessionUtils.getSqlSession();DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);Dept dept = mapper.getDeptAndEmpByStepOne(1);System.out.println(dept);}
http://www.lryc.cn/news/371767.html

相关文章:

  • 多源最短路径算法 -- 弗洛伊德(Floyd)算法
  • 同三维T80005EH4 H.265 4路高清HDMI编码器
  • 焦化行业排放平台简介
  • 『原型资源』Axure自带图标库不够用,第三方经典图标库来袭
  • 修改版的VectorDBBench更好用
  • 六西格玛培训都培训哪些内容 ?
  • K8S环境部署Prometheus
  • 在linux系统上挂载新硬盘
  • 1004.最大连续1的个数
  • 【机器学习300问】116、什么是序列模型?序列模型能干什么?
  • kafka 快速上手
  • Python记忆组合透明度语言模型
  • 如何保证数据库和缓存的一致性
  • Java基础 - 多线程
  • 云顶之弈-测试报告
  • TCP/IP协议分析实验:通过一次下载任务抓包分析
  • Python项目开发实战:企业QQ小程序(案例教程)
  • list模拟与实现(附源码)
  • Java应用中文件上传安全性分析与安全实践
  • noVNC 小记
  • 设置systemctl start kibana启动kibana
  • PostgreSQL:在CASE WHEN语句中使用SELECT语句
  • 游戏心理学Day13
  • GitLab中用户权限
  • RunMe_About PreparationForDellBiosWUTTest
  • C++中变量的使用细节和命名方案
  • [ACTF新生赛2020]SoulLike
  • C#——析构函数详情
  • 探索重要的无监督学习方法:K-means 聚类模型
  • 将web项目打包成electron桌面端教程(二)vue3+vite+ts