mybatis 操作总结
1.<Select> 标签也可以实现插入语句
使用 Select 标签,实际执行的是Insert 插入是可行的,相对应的不能返回自增id
<select id="insertTradingAnnouncement"> insert into t_trading_announcement(trading_account_id,content,visible_status,delete_status,read_number) values(#{param.tradingAccountId},#{param.content},1,1,0) </select>
2.如何批量插入数据?
<insert id="insertPicture"> insert into t_comment_picture(url,comment_id) values <foreach collection="param.urls" item="url" separator=","> (#{url},#{param.id}) </foreach> </insert>
将需要插入的数据使用<foreach> ,将数据集合遍历插入
<foreach> 标签成员属性:
- collection 是集合,需要被foreach 的对象
- separator 元素之间的分隔符,例如 separator = ","
- item 集合迭代的别名
- open 一般和 close 一起使用,如 open = "(" , close = ")"
- close
- index 在list 中表示的序号,在 map 中,表示元素的 key
3.mybatis 与 mysql 在插入,自增主键如何获取?
<insert id="commentSubject" useGeneratedKeys="true" keyProperty="id"> insert into t_comment(from_user_id,subject_id,content,comment_status) values(#{param.fromUserId},#{param.subjectId},#{param.content},1) </insert>
在<Insert> 标签中加入 useGeneratedKeys = true 与 keyProperty = "被映射的属性",将返回的id 映射到实体 ,执行 commenrtSubject 的结果返回值还是影响的行数,返回的id 需要在实体中获取
public ResponseInfo<?> commentSubject(CommentParam param) { commentDao.commentSubject(param); System.out.println(param.getId());
return ResponseInfo.ok(CommentSubCode.INSERT_COMMENT_SUCCESS);
}
4. sql 语句中的比较符号
< <
<= <=
> >
>= >=