来源
- 慕课网 https://www.imooc.com/video/19500
- 官方文档
使用步骤
- 导入依赖
- boot 启动类上加
@MapperSacn
指定接口所在的包 - 接口
extends BaseMapper<T>
(T 为要操作的实体类) - service层的接口
extends IService<T>
(T 为要操作的实体类)
测试使用 通用Mapper
使用的是 interface BaseMapper<T> extends Mapper<T>
Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能
测试新增
/**
* 测试新增 baseMapper.insert();
*/
@Test
public void test1(){
UserInfoDmo userInfoDmo = new UserInfoDmo();
// userInfoDmo.setId(-1L);
userInfoDmo.setUserName("测试mp新增");
userInfoDmo.setPhone("17714575412");
userInfoDmo.setGender(0);
userInfoDmo.setEmail("17714575412@163.com");
userInfoDmo.setCardNumber("6228449101233");
userInfoDmo.setFaceId(2333L);
userInfoDmo.setFingerprintId(12333L);
userInfoDmo.setEntId(123333L);
userInfoDmo.setDepartmentId(2L);
userInfoDmo.setType(0);
userInfoDmo.setRemark("999");
userInfoDmo.setIsDelete(0);
userInfoDmo.setCreateTime(FormatUtils.formatDate(new Date()));
userInfoDmo.setModifyTime(FormatUtils.formatDate(new Date()));
userInfoDmo.setCreateId(0L);
userInfoDmo.setModifyId(0L);
userInfoDmo.setGroupId(0L);
userInfoDmo.setUserGroupId(0L);
int insert = userInfoService.getBaseMapper().insert(userInfoDmo);
System.out.println("受影响的行数: "+insert);
}
根据id查询 和 根据id列表查询
/**
* 根据id查询 和 根据id列表查询
*/
@Test
public void test2(){
BaseMapper<UserInfoDmo> baseMapper = userInfoService.getBaseMapper();
UserInfoDmo userInfoDmo = baseMapper.selectById(1165809913960329218L);
System.out.println("查询出来的结果: "+userInfoDmo.toString());
System.out.println("--------------------------------------");
List<UserInfoDmo> userInfoDmos = baseMapper.selectBatchIds(Arrays.asList(1164419024302030850L, 1164421403969724417L, 1165143963833339905L));
userInfoDmos.forEach(System.out::println);
}
根据Map 条件查询 (map 中存的 key是数据表中的列名 不是实体类的字段名)
BaseMapper<UserInfoDmo> baseMapper = userInfoService.getBaseMapper();
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("face_id", 22);
List<UserInfoDmo> userInfoDmos = baseMapper.selectByMap(hashMap);
userInfoDmos.forEach(System.out::println);
排除实体类中字段在数据表中不存在的列
@TableField(exit=false)
以条件构造器为参数的查询方法
AbstractWrapper
条件构造器
QueryWrapper
/**
* 根据条件构造器查询
* 姓名中包含test 男的 "2019-08-21"注册的
*/
@Test
public void test4(){
QueryWrapper<UserInfoDmo> queryWrapper = new QueryWrapper<>();
queryWrapper.like("create_time","2019-08-21 ").like("user_name","test").eq("gender",1);
BaseMapper<UserInfoDmo> baseMapper = userInfoService.getBaseMapper();
List<UserInfoDmo> userInfoDmos = baseMapper.selectList(queryWrapper);
userInfoDmos.forEach(System.out::println);
}
查询结果排除某些字段信息
/**
* QueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate)
* 排除 class 中某些不需要查询处理的列
*/
@Test
public void selectByWrapper(){
// UserInfoDao
BaseMapper<UserInfoDmo> baseMapper = userInfoService.getBaseMapper();
// 构造查询条件
QueryWrapper<UserInfoDmo> userInfoDmoQueryWrapper = new QueryWrapper<>();
userInfoDmoQueryWrapper.select(UserInfoDmo.class, userInfo->!userInfo.getColumn().equals("modify_time")
&&!userInfo.getColumn().equals("modify_id"))
.like("user_name","2");
List<UserInfoDmo> userInfoDmos = baseMapper.selectList(userInfoDmoQueryWrapper);
userInfoDmos.forEach(System.out::println);
}