resultType和resultMap的区别
resultType只有查询出来的列名和pojo的属性名一致,才可以映射成功
resultMap可以自定义映射关系,比如
1 | <!-- 定义resultType |
动态拼接sql
<if>
标签 判断标签,常用在where中<foreach>
标签 通常用在批量删除、添加等操作中
1 | /*我们假如说参数为---- int[] ids = {1,2,3,4,5} ----那么打印之后的SQL如下: |
choose
标签 类似于java中的switch语句
1 | <select id="" parameterType="" resultMap=""> |
格式化输出
<where>
标签 它会判断如果它包含的标签中有返回值的话,它就插入一个‘where’。此外,如果标签返回的内容是以AND 或OR 开头的,则它会剔除掉。就不会出现判断语句中出现‘WHERE AND’之类关键字多余的sql错误set
标签 在update语句中使用if,如果前面的if没有执行则会出现逗号多余错误,使用set+if标签修改后,如果某项为null则不进行更新,而是保持数据库原值
1 | <update id="update"> |
trim
标签 灵活的去除多余关键字的,可实现where和set的效果
1 | <trim prefix="WHERE" prefixOverrides="AND|OR"> 等同于<where>标签 |
关联查询
当关联的是个List或者Set等多个对象时,使用 <collcetion>
标签,如
1 | private List<WarningDown> warningDownForMeet; |
当关联的只有一个对象时,使用<association>
标签,如
1 | private Company company; |
如果我需要查找用户(封装在user类)的时候也能找到他的一篇文章(封装在Article类)
1.首先需要在user类中添加Article属性
1 | private String id;//主键 |
2.在user对应的mapper中将id传过去
1 | <resultMap id="userResultMap" type="test.mybatis.entity.User"> |
3.在article对应的mapper中
1 | <resultMap id="articleResultMap" type="test.mybatis.entity.Article"> |