练习前期相关准备
数据表创建及数据导入
一对多查询
过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条件,以匹配包含特定文本的行。