springboot+mybatis配置通用mapper以及使用通用mapper详解

一、配置通用mapper

1、pom.xml中引入依赖


     tk.mybatis
     mapper-spring-boot-starter
     RELEASE


     org.mybatis.spring.boot
     mybatis-spring-boot-starter
     1.3.2

2、配置一个公共的接口

import tk.mybatis.mapper.common.*;

public interface MapperUtil extends Mapper, MySqlMapper ,  ConditionMapper, IdsMapper{

}

3、application.yml中配置

#我们配置公共的这个类不要放在全局可以扫描的mapper下,不然会报错
mapper:
  mappers: com.XX.XX.utils.MapperUtil
  identity: MYSQL

4、实体类

@Table(name = "users")
public class UsersEntity implements Serializable {

    private static final long serialVersionUID = -1989674246114209447L;

    @Id
    @GeneratedValue(generator = "JDBC")//获取数据库自增的主键
    private Integer uid;
    
    private String username;
 
    private String password;

    @Column(name = "`describe`") //当这个字段是mysql中的保留字时,这样可以解决
    private String describe;

    @Transient //表示这个字段不是数据库中分字段
    private String orderByClause;
}

5、mapper

@Repository
public interface UserMapper extends MapperUtil {
}

除了通用mapper中的一些简单的单表操作,其他复杂的多表操作可以自定义方法,自己结合mapper.xml使用。

6、方法的使用详解

1、按照条件新增 int insertSelective(T t)
2、新增,所有属性都会插入,如果没有设置就是NULL,int insert(T t) 此方法不常用
3、新增返回主键到对象中,int insertUseGeneratedKeys(T t)
4、修改按照主键更新,T对象里面有什么属性就更新什么属性 int updateByPrimaryKeySelective(T t)
5、修改根据主键更新数据,需要把对象中所有的字段全部填充才能调用此方法,一般不常用!
int updateByPrimaryKey(T t)

6、int updateByPrimaryKeySelective(T t)
根据主键更新数据,T对象里面有什么属性就更新什么属性,如果T对象没有主键,抛出异常

7、int updateByExampleSelective(workCategoryEntity, example);可以进行批量编辑
WorkCategoryEntity workCategoryEntity = new WorkCategoryEntity();      workCategoryEntity.setIsDelete(WorkCategoryEntity.IsDeleteEnum.DEL.getCode());
// 创建Example
Example example = new Example(WorkCategoryEntity.class);
// 创建Criteria
Example.Criteria criteria = example.createCriteria();
// 添加条件
criteria.andIn("workCategoryId", workCategoryIds);
workCategoryMapper.updateByExampleSelective(workCategoryEntity, example);

8、int delete(T t)
根据条件删除数据,原理同select(T)
9、int deleteByPrimaryKey(T t)
根据主键删除
10、查询
List select(T t) 
根据T对象中的属性名称查询,类似于select * from table where t.username=xxx and t.mobile = xxxx

11、T selectOne(T t)
如果断定T对象的查询条件是一个,可以调用此方法,返回单个对象

12、T selectByPrimaryKey(Object id)
根据主键查询

13、根据自定义条件查找
// 创建Example
Example example = new Example(WorkCategoryEntity.class);
example.setOrderByClause("sort ASC");
// 创建Criteria
Example.Criteria criteria = example.createCriteria();
  // 添加条件
criteria.andEqualTo("pid", pid);
criteria.andEqualTo("isDelete", WorkCategoryEntity.IsDeleteEnum.INIT.getCode());
List list = workCategoryMapper.selectByExample(example);

14、int countByExample(UserExample example):按条件计数。

目前我用到的是这些方法,当然他还有许多其他的方法,等用到了再补充,如果你们有更实用的方法,欢迎安利给我哦。

你可能感兴趣的:(工具)