一、增删改查
总结:增加和删除都是新建名为c的category类,而查询和更改都是通过selectone语句执行getcategory方法来获取记录,区别的是查询是直接输出,而更改需要set新的name
增加

category_是创建的表名,结果如下(运行了两次)

删除

通过执行删除id=4的数据删除了我重复的数据
查询
为什么这里没有接着输出全部数据,我仔细想了下,感觉是因为没有listALL,然后下半部分无法执行?而不是我最开始以为的是因为重新定义了c,两个c是不冲突的,循环里面的c是局部变量。然后测试了一些

如上图,输出了数据表中的全部数据,但是为什么没有先输出一次我要的id=3的数据呢?总之不影响学习,先放着
更改

修改了下代码,进一步验证了我上一步的想法,这一次也是只输出了我要的更改后的结果
思考
然后还有点小问题,我发现增加和删除前面的session后本身就有接着insert/delete,感觉有点重复了?但是好像也可以理解成通过我设置的方法进一步精确定位了我增加到哪里,以及从哪里删除
二、更多查询
模糊查询
对比一下两者的区别,之前的是精准查询id
现在的是select * from category_ where name like concat('%',#{0},'%')
多条件查询就是用and来连接啦,教材中设置的一个是id大于多少
额外插入一下
<select id="listCategory" resultType="Category"><!-- 意思是封装在category集合中 -->

结果如上图,在提前插入id为4的cat数据后成功找到并输出
突然发现一个问题在于,我突然想到设置的条件是大于4而不是等于4,不能正常输出才对
在将id换为5后也确实不能输出数据了,不知道 原因,但是 不影响继续学习!

好像终于搞清楚模糊查询的含义了.......其中的name只是作为初始值,如果不更改就是相当于没有这个条件,设置为我需要的条件后才是生效的?应该是这个意思吧不然条件就没用了(错误!!)
5.22更新:上面的想法是错的!

在动态查询的练习中,突然发现是因为在测试类中对name赋值了的,这个赋值是给条件赋值,如上图,只查得到名字有b的了

三、一对多关系
注意,这里有了新的数据表并对两张表数据都进行了改动


这里的两个type应该都是指的数据库吧,为什么用了两种表示方法
观察半天才发现自己看错了,测试类中是一个嵌套查询,就很容易理解了,先联合两张表选定条件为让两张表的cid和pid相等进行查询
好像比之前又懂了些,我之前一直没懂实体类java是干嘛的,现在看来通过xml,将数据表中每一列的值传到参数中,然后再通过java方法进行获取并传递
补充一张图明确对应的关系 
测试类中实际输出的是对应java包中的内容,get啊set啊一大堆通通用getProducts方法封装到我设置的列表里作为一层,并通过两次system.out输出结果
还是没很懂但是更理解一些了!
产生了新的问题

在检查xml时,我感觉p.cid不太对,应该是p.id才对,但是更改之后反而没有正确结果了
按照数据库的语法我觉得应该如下图才对,因为这里没有左连接的必要
但是报错了,可能语法有点区别?
用时:四小时



被折叠的 条评论
为什么被折叠?



