练习前期相关准备
数据表创建及数据导入

一对多查询


过resultMap ,进行字段和属性的对应。
使用association 进行多对一关系关联,指定表字段名称与对象属性名称的一一对应关系
Category的id 字段 和Product的id字段同名,Mybatis不知道谁是谁的,所以需要通过取别名cid,pid来区分。name字段同理。

在mybatis-config.xml中增加对于Product.xml的映射
多对一查询
if

对Product执行两条sql语句,一个是查询所有,一个是根据名称模糊查询。
那么按照现在的方式,必须提供两条sql语句:listProduct和listProductByName
然后在调用的时候,分别调用它们来执行。

如果Product的字段比较多的话,就可以使用Mybatis 动态SQL里的if标签
<select id="listProduct" resultType="Product">
select * from product_
<if test="name!=null">
where name like concat('%',#{name},'%')
</if>
</select>
where
如果要用if标签进行多条件判断,当没有name参数,却有price参数的时候,执行的sql语句就会是:select * from product_ and price > 10.这样执行会报错,就需要使用where标签


set
与where标签类似的,在update语句里也会碰到多个字段相关的问题。 在这种情况下,就可以使用set标签

trim
trim 用来定制想要的功能
一下两个代码片段等价


choose
Mybatis里面没有else标签,但是可以使用when otherwise标签来达到这样的效果。
when otherwise标签与之前学习过的if else标签意思差不多。

foreach
用于迭代遍历一个集合或者数组中的每个元素,并对每个元素执行相同的操作


bind
bind标签就像是再做一次字符串拼接,方便后续使用
'%' + name + '%'将name的值包装在百分号符号中,并将结果存储在likename变量中。这通常用于SQL查询中的LIKE条件,以匹配包含特定文本的行。
文章介绍了在Mybatis中如何使用resultMap处理一对多查询,通过association进行多对一关系映射。同时,讨论了在mybatis-config.xml中配置映射文件的方法,以及在多条件查询时如何利用if、where、set标签进行动态构建SQL语句。此外,还提到了choose、when、otherwise标签的使用和foreach标签在遍历集合时的作用。
240

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



