前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis之使用总结

Mybatis之使用总结

作者头像
爱撒谎的男孩
发布2019-12-31 15:05:49
3500
发布2019-12-31 15:05:49
举报
文章被收录于专栏:码猿技术专栏

文章目录

  1. 1. Mybatis之使用总结
    1. 1.1. 多表连接查询
    2. 1.2. 表与实体类中的字段不对应
    3. 1.3. Mapper方法中参数问题
    4. 1.4. 批量删除

Mybatis之使用总结

多表连接查询

  • 如果需要使用多表连接查询,使用resultMap对应表与实体类的对应关系太麻烦,我们可以定义一个值对象,其中封装了多表连接查询返回的字段,我们直接使用值对象接收返回的结果即可
  • 比如我们在商城网站上的显示购物车的模块,使用的CartVo
代码语言:javascript
复制
/**
 * 购物车的值对象
 * 用于接收多表连接查询的结果
 * @author chenjiabing
 */
public class CartVo implements Serializable {
	private static final long serialVersionUID = 8904622535687816912L;
	private Integer id;    //主键 购物车表中的主键
	private String goodsId;  //商品的id
	private Integer uid;  //用户id
	private String image;  //图片地址
	private String title;  //商品标题
	private Integer price; //商品价格
	private Integer num;  //加入购物车的商品数量
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getGoodsId() {
		return goodsId;
	}
	public void setGoodsId(String goodsId) {
		this.goodsId = goodsId;
	}
	public Integer getUid() {
		return uid;
	}
	public void setUid(Integer uid) {
		this.uid = uid;
	}
	public String getImage() {
		return image;
	}
	public void setImage(String image) {
		this.image = image;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public Integer getPrice() {
		return price;
	}
	public void setPrice(Integer price) {
		this.price = price;
	}
	public Integer getNum() {
		return num;
	}
	public void setNum(Integer num) {
		this.num = num;
	}
	@Override
	public String toString() {
		return "CartVo [id=" + id + ", goodsId=" + goodsId + ", uid=" + uid
				+ ", image=" + image + ", title=" + title + ", price=" + price
				+ ", num=" + num + "]";
	}
	
}

表与实体类中的字段不对应

  • 一般在数据库中定义字段的格式是使用下划线_连接的,但是在java中定义是使用驼峰式的命名风格,因此难免会出现字段不一样的情况,我们一般可以使用resultMap实现其的对应关系,或者在查询的时候,使用别名即可

Mapper方法中参数问题

  • 默认的mapper接口中的方法只能有一个参数,但是我们可以使用@Param("")这个注解来新增加参数

批量删除

  • 批量删除mapper接口中方法传入的是数组,必须使用@Param()标记,否则将不能识别
  • 使用的sql语句: delete from 表名 where id in (.....)
  • 我们可以在<delete>节点中使用<forEach>标签来遍历传入的数组
代码语言:javascript
复制
<!-- 
 	void deleteCartById(Integer[] ids);
 	批量删除
  -->
  <delete id="deleteCartById" parameterType="java.lang.Integer">
  		delete from t_cart 
  		where
  		id in
  		<!-- 
  			遍历数组ids
  			collection:需要遍历的数组
  			item: 数组中的每一个值
  			open : 开始的内容
  			close: 结束的内容
  			separator :每个元素的分割符
  			最后拼接的就是  (id,id,id,id,id)
  		 -->
  		<foreach collection="ids" item="id" open="(" separator="," close=")">
  			#{id}
  		</foreach> 
  </delete>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Mybatis之使用总结
    • 多表连接查询
      • 表与实体类中的字段不对应
        • Mapper方法中参数问题
          • 批量删除
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档