此次在项目中相遇了mybatis,重新回顾下。
1.resulMap解决了结果集的列名字跟实体setter和getter不匹配的问题
其中property是实体的setter和getter对象,column是表中的列字段
2.mybatis的动态sql语句,自豪的技术,主要是拼装sql语句
1)if
2)choose(when,otherwise)
3)trim(where ,set)
4)foreach
这就是mybatis中主要的动态sql表达标签,
a.if标签中test是判断条件,其他和if没有什么改变。
<if test =" name != null">
and userName = #{name}
</if>
b.choose when otherwise 和switch case相像,很多情况下选择一种,若没有就是otherwise中的语句
c.where标签,if条件第一个不成立,第二个成立,where and address = #{address},如果mybatis检测到where后and,则去掉and关键字,如果if条件都不成立,where关键字也会去掉。比如
d.set标签,第一个条件成立,第二个条件不成立,会自动去掉第一个条件后面的都号;若两个条件都没有成立,set不会出现,但会报异常,sql异常,至少有一个条件成立。比如:
e.trim标签,trim标签替换wher标签,prefix前缀 where,prefix="where";prefixOverrides="AND | OR",prefixOverrides:前缀覆盖,第一个if条件不成立,第二个if条件成立,会prefixOverrides中的值去覆盖,都不成立where前缀会去掉,比如;
f.trim标签,替换set。prefix="SET" 前缀为set,suffixOverrides="," 后缀为都好。第一个条件成立,第二个条件不成立,后去掉后面的逗号,至少有一个if要成立,不然报sql语法异常。比如:
h.foreach标签,就是循环,比如:
3.mybatis的关联映射
1)对一关联:association
2)对多关联:collection
比如以下例子:
对一关联:
对多关联: