Mybatis延迟加载与立即加载案例教程
Mybatis是一款优秀的Java持久层框架,其中对于对象关系映射的实现有立即加载和延迟加载两种方式。在使用Mybatis的过程中,我们需要根据实际情况来选择延迟加载或者立即加载。本教程将会为大家介绍Mybatis中延迟加载与立即加载的应用。
1. 立即加载
列出Student表格的每一条记录,并返回相关信息:
SELECT * FROM student
得到的结果类似于:
|------------------------------------------------------------|
| <Student Id='1' Name='张三' Score='100' ClassId='11' /> |
| <Student Id='2' Name='李四' Score='98' ClassId='22' /> |
| <Student Id='3' Name='王五' Score='89' ClassId='11' /> |
| <Student Id='4' Name='赵六' Score='78' ClassId='33' /> |
| <Student Id='5' Name='陈七' Score='95' ClassId='22' /> |
|------------------------------------------------------------|
2. 延迟加载
延迟加载需要在xml文件中添加对应的配置,以实现数据库查询的优化。比如说,在查询学生的同时,我们还需要查询该学生所对应的班级等信息。这时候,我们可以使用延迟加载来实现这一功能。
具体实现请看以下代码:
2.1 Student实体类
@Data
public class Student {
private Integer Id;
private String Name;
private Integer Score;
private Integer ClassId;
private Class cls;
}
2.2 Class实体类
@Data
public class Class{
private Integer Id;
private String Name;
private Integer TeacherId;
}
2.3 StudentMapper.xml
<!--定义查询语句-->
<select id="findStudentById" resultMap="studentMap">
SELECT * FROM student WHERE Id = #{id}
</select>
<resultMap id="studentMap" type="student">
<id column="Id" property="Id"/>
<result column="Name" property="Name"/>
<result column="Score" property="Score"/>
<result column="ClassId" property="ClassId"/>
<!--映射Class字段-->
<association property="cls" javaType="class">
<id column="TeacherId" property="TeacherId"/>
<result column="Name" property="Name"/>
</association>
</resultMap>
2.4 StudentMapper.java
public interface StudentMapper {
Student findStudentById(Integer Id);
}
这里的关键是通过association标签映射出关联的对象,并使用select标签来查询相关信息。这样,当我们调用findStudentById方法时,会执行sql语句查询学生信息,并按需查询班级信息。
总结
本教程结合立即加载和延迟加载两种方式对Mybatis持久层框架的应用进行了详细说明。对于关系型数据库的开发人员而言,Mybatis是一种非常不错的持久层框架选择。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis延迟加载与立即加载案例教程 - Python技术站