MyBatis学习3

一、多对一

接着上次一对多留下来的疑问

两种方式都尝试了都成功了,不知道是系统自己覆盖了还是怎样,总之我觉得我的思路是没问题的,但是还是没太懂原本的代码是什么意思,先放一下

 然后看看这次的测试类和结果

 没有使用嵌套循环了,通过在product类中加入getCategory方法获取相关信息

相比于一对多,多了一个product.xml

然后尝试了一下,category.xml是不可以被删掉的,也就是说运行需要用到三个xml文件 

对比一下两个xml文件吧

两个文件都可以划分为三个部分,大体是相似的,查询的代码是完全相同,注意到标签一对多collection(集合)和多对一association(关联)的区别

总之从大体上来讲,关于category的信息内容需要通过product类来跳转查找并输出,所以为Product类增加category属性,所以也需要新增Product.xml来添加对Category的映射帮助查找

然后在Category类中,相应的测试类做出改动后我觉得它好像不需要获取 Product了,我在删除上图红框中的内容后也确实正常运行,但是我又觉得会不会和xml中的映射扯上关系(应该不会和数据表查询有关系,那个只是表的查询不涉及到java类吧,只是因为刚好同名而已),虽然正常运行是不是因为系统自己纠错了,太晕了,原理也不是很懂

 但是在我进一步想删除Category.xml中的映射时(上图)就报错了,我的思路是另一个xml文件已经有多对一的映射了,在测试类中也没有用到一对多的映射,应该不会影响 ?但是结果是需要的,也就说需要相互映射?

多对一的学习就到这里吧


二、终于到动态sql了!

动态sql教程

先正常来一遍,运用Product.xml中的两种查询方法 

if

使用if语句

如果没有传参数name,那么就查询所有,如果有name参数,那么就进行模糊查询。
这样只需要定义一条sql语句即可应付多种情况了,在测试的时候,也只需要调用这么一条sql语句listProduct 即可 

 再测试一下

 

两种查询结果


 where

在多条件查询中如果只有一个条件没办法正常执行,引入where

 比较有没有where标签的差别

 

 然后set标签我没看太懂,给的案例不是还是在查询里面吗,对更新的限制是在哪里呢?


choose

 标签组 where、choose、when or otherwise


 

foreach

也是没看懂例子......

 

 这不是选取三个到一个表单里面然后再新建实体查询表单内容吗,foreach的特殊性不是很能理解


bind

 之前这个string(字符串)应该是object表示值

暂时到这里了,有的例子虽然有点没懂意思但是知道大概的标签了


三、分页

首先删除数据、增加数据并且输出数据

 暂时没有用到if中的语句,完成创造数据并输出,但是不是很理解为什么输出的数据是倒序?

start是指从第0个开始,如果是第二页,那么就是第5个开始。
count参数是指每页有5条数据

在更改代码重新要求输出后,得到的结果也和预期不太一样,没看懂输出的是什么东西

 为什么95-99对应的是id201-205?

在观察数据表之后发现可能是因为之前错误执行了,第一次没正确删除原有的五个数据,第二次创造一百条数据后我重新开始又删除了,所以是从id=106开始的

但是为什么只输出了最后五个呢,从0开始应该是输出第一页最前面的五个才对

考虑到之前输出全部数据也是按倒序输出的,所以如果是按倒序其实是输出的第一页,所以为什么会突然变成倒序输出呢???

暂时就到这里吧,把所有内容都了解了一遍

用时:四个小时

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值