mybatis 查询的时间不对_MyBatis学习之——逆向工程关联查询显示员工表里面的部门信息、上级领导信息...

6160c09a7edca06a4a8be304adece8de.png

我们知道,MyBatis的逆向工程可以帮我们自动的生成Pojo和Mapper,大大的减少了我们开发的时间

皮浪养的一只猪:MyBatis逆向工程学习​zhuanlan.zhihu.com
ba83730f6e36b16a633851eaf499ef7b.png

但是有一个问题,那就是MyBatis逆向工程生成的Mapper映射文件和接口只能帮我们进行单表的操作

基本的操作方法为:

b5384e78f44bda0c56db2dd0f83808dc.png

那当我们要这样显示员工数据的时候

06dba7bbd72795e8dd56f475e23d6cf8.png

那么问题来了,这时候MyBatis逆向工程自动生成的代码是不够的,因为这样的数据显示不仅仅是一张表,而是两张表,员工表emp,部门表dept,并且显示的信息中,还有上级领导的信息,也就是自关联查询。

f6e45a50911fc7e2acd2511f9b7097bd.png

f0eab0ead11e19e31f9a39d79ed95c58.png

那这时候怎么办呢?使用关联查询

那MyBatis逆向工程自动生成的映射文件和接口只能对单表操作,怎么多表联查呢?

很好办,没有条件,创造条件

下面是思路:

1、我们由于搞分页查询,所以肯定得接收两个参数,一个是page(表示的是当前页是第几页,这里默认值我设置为1),rows(表示的是一页显示多少条数据,这里默认值我设置是3)

469f78106ee3c5ace598928b2a22e3a9.png

这里使用的是SSM开发的

2、业务层

ba6c3e7ca74cc49b1e6baabe11803e6a.png

0ab8cdcbf9086c65655d34f85cbe803a.png

这里业务层使用到了分页的插件PageHelper,很方便,可以封装我们查询的信息

3、下面是到了Mapper层了

Mapper层是MyBatis逆向工程自动生成的,所以没有关联查询,这里我们需要修改一下,没有条件,我们就创造条件

首先是Pojo实体类Employee的修改,

e340483627d1e4771e11f9b029a187cc.png

可以看出生成的实体类里没有部门这个信息Dept,也没有上级员工Employee这个信息,虽然我们可以直接写在里面,但是不建议直接写在里面,这样有可能会影响到其他的操作,所以我们可以继承员工类Employee,我们去我们定义的这个类中去书写:

ab68d9e970ad7ac027bac0917372411b.png

好了,有了实体类可以接收从数据库查询来的数据,这时候我们得去接口中添加一个方法:

912a0a928ea26d46ea93e019794b032e.png

一个是查询所有的员工信息,一个是通过上级领导的编号,查询上级领导的信息

接着修改EmployeeMapper.xml配置文件

c0423a669c62cc1f2823c0e5219ee25b.png

593f48e55e2921dc41a8fd9be25a466d.png

这里就是关键部分了,需要说明:

2051d6f9107db26a9df86450ba77166c.png

这里要注意另外一个关联查询:

ded0f6804c6c9aaf5626ee19424778e2.png

虽然这里没有使用到,但是还得提一下colletion和association的区别

colletion:

比如说:老师的信息中可能含有学生的信息,学生不可能只有一个,而是一个List<Student>

association:

比如说:上面的一个员工,一个部门,一个员工只有一个上级领导

最后把查询的数据返回,从分页助手的PageInfo中取出数据:

ad6c5cd993f2997edb4bd51e99965c67.png

存入作用域,响应到JSP页面,JSP页面中接收数据,使用JSTL和EL表达式处理,就可以显示了:

cd1cea4121da3b6882e6cbbcbce750a8.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值