mybatis之通用mapper的使用(springBoot 整合)

20 篇文章 1 订阅
1 篇文章 0 订阅
  1. 什么是通用mapper
    通用mapper 可以极大的方便开发人员进行ORM,提供极其方便的单表增删改查。
    什么是通用mapper,一句话简单说,它就是个辅助mybatis极简单表开发的组件。它不是为了替代mybatis,而是让mybatis的开发更方便。
    可以按照自己的需要选择通用方法,还能很方便的开发自己的通用方法。

  2. 怎么用通用mapper
    首先导入通用mapper的依赖

<!-- 通用mapper -->
   	<dependency>
   		<groupId>tk.mybatis</groupId>
   		<artifactId>mapper</artifactId>
   		<version>4.0.0</version>
   	</dependency>

接着我们就可以在我们的Mapper层继承通用Mapper来使用它

package cn.bluethink.eguan.core.mapper;

import cn.bluethink.eguan.core.entity.EgOtactionEntity;
import tk.mybatis.mapper.common.Mapper;
//通用mapper要一个实体类作为参数,作为数据库查询表
public interface EgOtactionMapper  extends Mapper<EntprBasicInfo>{

}

我们看看Mapper泛型中EntprBasicInfo类有什么特点:

package com.redis.demo.model;

import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;

/**
* @program: redis_demo
* @description:
* @author: fbl
* @create: 2020-05-26 16:17
**/
@Data
// 相对应的表名
@Table(name = "entpr_basic_info")
public class EntprBasicInfo implements Serializable {
  /**
   * ID
   */
  @Id
  //    为了可以回写主键的值,使用注解:@GeneratedValue(generator ="JDBC")
  @GeneratedValue(generator ="JDBC"private Long id;

  /**
   * 企业的中文全称(全局唯一)
   */
   // 相对应数据库中的字段名(以下都是)
  @Column(name = "entpr_name")
  private String entprName;

  /**
   * 企业简称
   */
  @Column(name = "entpr_simple_name")
  private String entprSimpleName;

  /**
   * 行政区划
   * 1  市辖区 2 虎丘区 3  吴中区 4 相城区  5 姑苏区 6 吴江区 7  苏州工业园区  8 常熟市
   * 9  张家港市   10 昆山市  11 太仓市  12  苏州市
   */
  private Integer region;

  /**
   * 详细地址
   */
  @Column(name = "detail_addr")
  private String detailAddr;
  
  //使用@Transient注解可以忽略字段,添加该注解的字段不会作为表字段使用.
  @Transient
  private String userName;
}

下面列举通用Mapper一些基本方法:

查询多个对象,返回List:

select()

按照主键查询,返回单个对象:

selectByPrimaryKey()

根据条件查询,返回List:

   	Example example = new Example(User.class);
   	Criteria criteria = example.createCriteria();
   	criteria.andBetween("age", 15, 30);
   	criteria.andLike("userName", "%zhang%");
   	//添加or的条件
   	Criteria criteria2 = example.createCriteria();
   	criteria2.andEqualTo("password", "123456");
   	example.or(criteria2);
   	//按年龄倒序排序,如果年龄相同,按id正序排序
   	example.setOrderByClause("age desc,id asc");
   	List<User> list = newMapper.selectByExample(example);

插入,返回int:

// 第一种
insert();
// 第二种(推荐):可选择插入字段
insertSelective();

条件删除,返回int:

// 第一种条件删除:如果条件为null或未初始化的实体类对象,删除全部数据
   	User user = new User();
   	user.setUserName("admin1");
   	newMapper.delete(user);
// 第二种条件删除:
   	Example example = new Example(User.class);
   	Criteria criteria = example.createCriteria();
   	criteria.andLike("userName", "admin");
   	newUserMapper.deleteByExample(example);

根据主键删除:

deleteByPrimaryKey();

根据主键进行更新(不推荐):

// 必须设置主键
// 没有的更新为null
updateByPrimaryKey();

根据主键进行更新(可选择的)

// 必须设置主键
// 没有的不更新
updateByPrimaryKeySelective();

根据条件更新(可选择的)返回int类型,没设置的属性就不做修改

   	// 将年龄>22的用户的密码修改成123	
   	Example example = new Example(User.class);
   	Criteria criteria = example.createCriteria();
   	criteria.andGreaterThan("age", 22);
   	User user = new User();
   	user.setPassword("123");
   	newMapper.updateByExampleSelective(user, example);

根据条件更新(不可选择)返回int类型,没有设置属性的都更新为null.

   	// 将年龄>22的用户的密码修改成321
   	Example example = new Example(User.class);
   	Criteria criteria = example.createCriteria();
   	criteria.andGreaterThan("age", 22);
   	
   	User user = new User();
   	user.setPassword("321");
   	newMapper.updateByExample(user, example);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值