Mybatis中标签大全
文章目录
一、标签分类
二、标签总结
1. 基础SQL标签
1.1 查询select
1.2 增删改
1.3 其他基础标签
1.3.1 sql 标签
1.3.2 include 标签
1.3.3 if 标签
1.3.4 别名
2. collection与association标签
3. resultMap标签
4. foreach标签
5. where标签
6. set标签
7. trim标签
8. choose、when、otherwise标签
二、写在后面
一、标签分类
定义SQL语句
- insert
- delete
- update
- select
配置关联关系
- collection
- association
配置java对象属性与查询结果集中列名的对应关系
- resultMap
控制动态SQL拼接
- foreach
- if
- choose
格式化输出
- where
- set
- trim
定义常量
- sql
其他
- include
二、标签总结
1. 基础SQL标签
1.1 查询select

/*** 根据条件查询用户集合*/List selectUsers(@Param("cond")Map map);
1.2 增删改

SELECT user_seq.NEXTVAL as id from DUAL insert into User (ID, USERNAME, PASSWORD, SEX, ADRESS, CREATED_BY, CREADTED_DATE)values (#{id}, #{username}, #{password}, #{sex}, #{adress}, #{createdBy}, SYSDATE)
1.3 其他基础标签
1.3.1 sql 标签
定义一些常用的sql语句片段
id, username, password, sex, birthday, address
1.3.2 include 标签
引用其他的常量,通常和sql一起使用
1.3.3 if 标签
基本都是用来判断值是否为空,注意Integer的判断,mybatis会默认把0变成 ‘’
1.3.4 别名
经常使用的类型可以定义别名,方便使用,mybatis也注册了很多别名方便我们使用
2. collection与association标签
collection与association的属性一样,都是用于resultMap返回关联映射使用,collection关联的是集合,而association是关联单个对象

/***问题表*/
public class Question {private Long id; //问题idprivate String question; //问题private Integer questionType; //问题类型private List answerList; //问题选项集合//Getter和Setter省略
}/***问题选项表*/
public class QuestionAnswer {private Long id; //选项idprivate Long questionId; //问题idprivate String answer; //选项//Getter和Setter省略
}
3. resultMap标签

4. foreach标签

id, question_id, answer
insert into question_answer ( ) select question_answer_seq.NEXTVAL, A.* from (select #{item.questionId}, #{item.answer} from dual ) A
insert into question_answer ( ) values #{item.id}, #{item.questionId}, #{item.answer}
5. where标签
where用来去掉多条件查询时,开头多余的and
6. set标签
set是mybatis提供的一个智能标记,当在update语句中使用if标签时,如果前面的if没有执行,则或导致逗号多余错误。使用set标签可以将动态的配置SET 关键字,和剔除追加到条件末尾的任何不相关的逗号。
没有使用if标签时,如果有一个参数为null,都会导致错误,如下示例:
update userusername = #{username}, sex = #{sex}, birthday = #{birthday}, address = #{address}, last_modified_by = #{lastModifiedBy},last_modified_date = SYSDATE, id = #{id}
7. trim标签

prefix:前缀
prefixoverride:去掉第一个and或者是or
suffixoverride:去掉最后一个逗号(也可以是其他的标记,就像是上面前缀中的and一样)suffix:后缀
update username= #{username}, password= #{password}, id = #{id}
8. choose、when、otherwise标签
二、写在后面
在网上看了很多标签的解释,但不是很全,我就自己总结了一份,搭配示例更好理解标签的含义,如有什么遗漏或是错误还望多多发言补充,我会继续完善。
注: 关于参数指定jdbcType,是因为当传参为null时候,mybatis无法自动判断类型,就必须要显示指定它的类型,多用于insert中
传入的参数的字段为null对象无法获取对应的jdbcType类型,而报的错误。
你只要在insert语句中insert的对象加上jdbcType就可以了,修改如下:
#{menuTitle,jdbcType=VARCHAR}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
