Lombok config system Code inspections Refactoring actions(lombok and delombok)
一对多和多对一
关联 - association (多对一)
集合 - collection (一对多)
JavaType & ofType
JavaType用来制定实体类中的属性的类型
ofType用来指定映射到List或者集合中的pojo的类型,(范型中的约束类型)
动态SQL
使用绑定变量根据不同的条件生成不同的SQL
if
1 2 3 4 5 6 7 8 9
<selectid="queryBlogIF"parameterType="map"resultType="blog"> select * from mybatis.blog where 1=1 <iftest="title != null"> and title = #{title} </if> <iftest="author != null"> and author = #{author} </if> </select>
where
where 标签只会在至少有一个子元素的条件返回SQL子句的情况下才去插入WHERE子句。例如,上面的if可以不用where 1=1而改写为
1 2 3 4 5 6 7 8 9 10 11
<selectid="queryBlogIF"parameterType="map"resultType="blog"> select * from mybatis.blog <where> <iftest="title != null"> and title = #{title} </if> <iftest="author != null"> and author = #{author} </if> </where> </select>
choose
choose有点类似与java中的switch和case语句。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<selectid="queryBlogChoose"parameterType="map"resultType="blog"> select * from mybatis.blog <where> <choose> <whentest="title != null"> title = #{title} </when> <whentest="author != null"> and author = #{author} </when> <otherwise> and views = #{views} </otherwise> </choose> </where> </select>
set
set语句会动态包含需要更新的列,而舍去其他的,同时会删除无关的逗号。
1 2 3 4 5 6 7 8 9 10 11 12
<updateid="updateBlog"parameterType="map"> update mybatis.blog <set> <iftest="title != null"> title = #{title}, </if> <iftest="author != null"> author = #{author} </if> </set> where id = #{id} </update>
<selectid="selectPostIn"resultType="domain.blog.Post"> select * from post p where id in <foreachitem="item"index="index"collection="list" open="("separator=","close=")"> #{item} </foreach> </select>
sql片段
使用sql标签抽取公共的部分
1 2 3 4 5 6 7 8
<sqlid="if-title-author"> <iftest="title != null"> title = #{title} </if> <iftest="author != null"> and author = #{author} </if> </sql>
在需要使用的地方使用include标签引用即可。
1 2 3 4 5 6
<selectid="queryBlogIF2"parameterType="map"resultType="blog"> select * from mybatis.blog <where> <includerefid="if-title-author"/> </where> </select>