文章目录
前言
MyBatis是一个非常优秀的持久层框架,从工作开始基本所有接触的项目使用的都是MyBatis框架,个人感觉它的优点就是轻量级,易配置,sql自由,结果集映射功能强大。除了使用起来舒服,MyBatis的整体设计理念也是很优秀的,清晰的分层设计,对于设计模式的使用,也是值得学习和思考的,虽然自己目前对于其中一些设计理念还难以理解。
当前想详细介绍和总结一下自己常用到的级联查询和动态sql几个场景。虽然比较简单,但是每次写的时候都要查资料,所以自己记录一下。
业务相关数据模型
一个简单的教师-班级-学生 关系数据模型
级联查询示例
-
业务场景
根据上述数据模型,需求是查询某个班级的班级名称、班主任名和所有的学生名。
-
定义返回数据模型
定义需求所需要数据的VO实体
public class ClassInfoVO { private Long id; private String className; private String headTeacherName; private List<String> studentName; /** * getter/setter */ }
-
定义mapper接口
public interface TClassMapper { ClassInfoVO getDetail(@Param("id") Long id); }
-
映射文件
<?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.learn.mybatiscrud.mapper.TClassMapper"> <resultMap id="classInfoMapper"