怎么使用mapper实现多表查询

怎么使用mapper实现多表查询,第1张

一、一对一关联

1.1、提出需求

根据班级id查询班级信息(带老师的信息)

1.2、创建表和数据

创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系。

1 CREATE TABLE teacher(

2 t_id INT PRIMARY KEY AUTO_INCREMENT,

3 t_name VARCHAR(20)

4 )

5 CREATE TABLE class(

6 c_id INT PRIMARY KEY AUTO_INCREMENT,

7 c_name VARCHAR(20),

8 teacher_id INT

9 )

10 ALTER TABLE class ADD CONSTRAINT fk_teacher_id FOREIGN KEY (teacher_id) REFERENCES teacher(t_id)

11

12 INSERT INTO teacher(t_name) VALUES('teacher1')

13 INSERT INTO teacher(t_name) VALUES('teacher2')

14

15 INSERT INTO class(c_name, teacher_id) VALUES('class_a', 1)

16 INSERT INTO class(c_name, teacher_id) VALUES('class_b', 2)

如何开发自己的通用Mapper

HsqldbMapper实例

第一步,创建HsqldbMapper<T>

public interface HsqldbMapper<T>{

}

这个接口就是我们定义的通用Mapper,具体的接口方法在**第三步**写。其他的Mapper可以继承这个HsqldbMapper<T>。

第二部,创建HsqldbProvider

public class HsqldbProvider extends MapperTemplate {

//继承父类的方法

public HsqldbProvider(Class<?>mapperClass, MapperHelper mapperHelper) {

super(mapperClass, mapperHelper);

}

}

这个类是实际处理 *** 作的类,需要继承MapperTemplate,具体代码在**第四步**写。

第三步,在HsqldbMapper<T>中添加通用方法

这里以一个分页查询作为例子。 public interface HsqldbMapper { /** * 单表分页查询 * * @param object * @param offset * @param limit * @return */

@SelectProvider(type=HsqldbProvider.class,method = "dynamicSQL") List

selectPage(@Param("entity") T object, @Param("offset") int offset,

@Param("limit") int limit); }

返回结果为List,入参分别为查询条件和分页参数。在Mapper的接口方法中,当有多个入参的时候建议增加@Param注解,否则就得用param1,param2…来引用参数。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11395377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存