MyBatis Plus之CRUD接口调用Demo

简介

MyBatis-Plus

(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

官网 https://mp.baomidou.com/

MP提供了很多常用的CRUD接口可以帮助我们提升开发效率。

今天试了下,确实不错 列举几个不错的方法记录下方便日后查阅同时给需要的朋友提供下demo。

诸如insert deleteById selctById 此类 常见的就不列举了

deleteByMap

可直接根据列名删除某条数据


/**
 * 

* 根据 columnMap 条件,删除记录 *

* * @param columnMap 表字段 map 对象 * @return 删除成功记录数 */ int deleteByMap(@Param(Constants.COLUMN_MAP) Map columnMap); 示例 //删除name列为马冬梅的数据 如果存在重名 会一起删除 Map columnMap = new HashMap<>(); columnMap.put("name","马冬梅"); userMapper.deleteByMap(columnMap);

delete

条件删除,厉害了...

/**
 * 

* 根据 entity 条件,删除记录 *

* * @param queryWrapper 实体对象封装操作类(可以为 null) * @return 删除成功记录数 */ int delete(@Param(Constants.WRAPPER) Wrapper queryWrapper); 示例 /* 个别参数说明: params : key为数据库字段名,value为字段值 null2IsNull : 为true则在map的value为null时调用 isNull 方法 DELETE FROM user WHERE email IS NULL 为false时则忽略value为null的 慎用.. DELETE FROM user */ Map columnMap = new HashMap<>(); columnMap.put("email",null); userMapper.delete(new QueryWrapper().allEq(columnMap,false));

deleteBatchIds

批量删除,没啥好说的

/**
 * 

* 删除(根据ID 批量删除) *

* * @param idList 主键ID列表(不能为 null 以及 empty) * @return 删除成功记录数 */ int deleteBatchIds(@Param(Constants.COLLECTION) Collection idList); 示例 /** * 批量删除 * Collection集合 * DELETE FROM user WHERE id IN ( ? , ? , ? ) * Parameters: 9(Integer), 10(Integer), 11(Integer) */ Listlists = new ArrayList<>(); lists.add(9);lists.add(10);lists.add(11); userMapper.deleteBatchIds(lists);

update

/**
 * 

* 根据 whereEntity 条件,更新记录 *

* * @param entity 实体对象 (set 条件值,不能为 null) * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句) * @return 修改成功记录数 */ int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper updateWrapper); 示例 /** * * 无condition 默认为true false会修改全局 * SELECT id,name,age,email FROM user WHERE name = ? * UPDATE user SET name=?, age=?, email=? WHERE age = ? * true * UPDATE user SET name=?, age=?, email=? WHERE age = ? * false * UPDATE user SET name=?, age=?, email=? */ User user = userMapper.selectOne( new QueryWrapper().eq(true,"name","xiaoming")); user.setName("zgr"); user.setEmail("[email protected]"); userMapper.update( user, new UpdateWrapper().eq(true,"age",user.getAge()));

selectBatchIds

批量查找, 也经常用到

/**
 * 

* 查询(根据ID 批量查询) *

* * @param idList 主键ID列表(不能为 null 以及 empty) * @return 实体集合 */ List selectBatchIds(@Param(Constants.COLLECTION) Collection idList); 示例 /** * 批量查找 * SELECT id,name,age,email FROM user WHERE id IN ( ? , ? , ? ) * Parameters: 1(Integer), 2(Integer), 3(Integer) */ Listlist = new ArrayList(); list.add(1);list.add(2);list.add(3); ListusersList = userMapper.selectBatchIds(list); usersList.forEach(System.out::println);

selectByMap

条件查找 正常还得多写个方法 mp一行搞定

/**
 * 

* 查询(根据 columnMap 条件) *

* * @param columnMap 表字段 map 对象 * @return 实体集合 */ List selectByMap(@Param(Constants.COLUMN_MAP) Map columnMap); 示例 Map columnMap= new HashMap<>(); columnMap.put("age",20); /** * 查出age为20用户 * SELECT id,name,age,email FROM user WHERE age = ? * Parameters: 20(Integer) */ ListusersList = userMapper.selectByMap(columnMap); usersList.forEach(System.out::println);

selectOne

同理

selectCount

统计符合条件数据数
/**
 * 

* 根据 Wrapper 条件,查询总记录数 *

* * @param queryWrapper 实体对象 * @return 满足条件记录数 */ Integer selectCount(@Param(Constants.WRAPPER) Wrapper queryWrapper); 示例 /** * 统计符合条件数据数 * SELECT COUNT(1) FROM user WHERE age > ? * Parameters: 20(Integer) */ System.out.println( userMapper.selectCount(new QueryWrapper().gt("age",20)));

selectList

/**
 * 

* 根据 entity 条件,查询全部记录 *

* * @param queryWrapper 实体对象封装操作类(可以为 null) * @return 实体集合 */ List selectList(@Param(Constants.WRAPPER) Wrapper queryWrapper); 示例 /** * 针对某列进行查询 * conditon为true时 column即作为查询条件 * SELECT id,name,age,email FROM user WHERE name = ? * Parameters: null * conditon为false时 * SELECT id,name,age,email FROM user */ Listlist = userMapper.selectList( new QueryWrapper().eq(true,"age",20)); list.forEach(System.out::println);

selectMaps

获取符合条件的字段值 即 column 和 value

/**
 * 

* 根据 Wrapper 条件,查询全部记录 *

* * @param queryWrapper 实体对象封装操作类(可以为 null) * @return 字段映射对象 Map 集合 */ List> selectMaps(@Param(Constants.WRAPPER) Wrapper queryWrapper); 示例 /** *

* 根据 Wrapper 条件,查询全部记录 * SELECT id,name,age,email FROM user WHERE age > ? * Parameters: 20(Integer) * @param queryWrapper 实体对象封装操作类(可以为 null) * @return 所有字段映射对象 Map 集合 */ List>mapList = userMapper.selectMaps( new QueryWrapper().gt("age",20)); for (int i = 0; i map= mapList.get(i); SetstringSet = map.keySet(); Iterator iterator = stringSet.iterator(); while (iterator.hasNext()){ String column = (String)iterator.next(); System.out.println(column + "<<<字段 值>>>"+ map.get(column)); } }

selectObjs

/**
 * 

* 根据 Wrapper 条件,查询全部记录 * 注意: 只返回第一个字段的值 *

* * @param queryWrapper 实体对象封装操作类(可以为 null) * @return 字段映射对象集合 */ List selectObjs(@Param(Constants.WRAPPER) Wrapper queryWrapper); 示例 /** * 注意: 只返回第一个字段的值 * SELECT id,name,age,email FROM user WHERE age > ? * Parameters: 20(Integer) */ List user = userMapper.selectObjs( new QueryWrapper().gt(true,"age",13)); user.forEach(System.out::println);

selectPage

分页~

/**
 * 

* 根据 entity 条件,查询全部记录(并翻页) *

* * @param page 分页查询条件(可以为 RowBounds.DEFAULT) * @param queryWrapper 实体对象封装操作类(可以为 null) * @return 实体分页对象 */ IPage selectPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); 示例 /** * SELECT COUNT(1) FROM user WHERE age > ? * 13(Integer) * 查出第三页 每页显示三条 * SELECT id,name,age,email FROM user WHERE age > ? LIMIT ?,? */ IPage iPage = userMapper.selectPage( new Page<>(3, 3),new QueryWrapper().gt(true,"age",13)); Listusers = iPage.getRecords(); users.forEach(System.out::println); System.out.println(iPage.getTotal());//共有数据量 System.out.println(iPage.getCurrent());//当前页码 System.out.println(iPage.getPages());//共有几页 System.out.println(iPage.getSize());//每页显示几条

selectMapsPage

同selectMaps 只获取键值

/**
 * 

* 根据 Wrapper 条件,查询全部记录(并翻页) *

* * @param page 分页查询条件 * @param queryWrapper 实体对象封装操作类 * @return 字段映射对象 Map 分页对象 */ IPage> selectMapsPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); 示例 IPage>mapIPage = userMapper.selectMapsPage( new Page<>(3, 3),new QueryWrapper().gt(true,"age",13)); List>mapList = mapIPage.getRecords(); for (int i = 0; i map= mapList.get(i); SetstringSet = map.keySet(); Iterator iterator = stringSet.iterator(); while (iterator.hasNext()){ String column = (String)iterator.next(); System.out.println(column + "<<<字段 值>>>"+ map.get(column)); } }

这些方式组合起来可以解决平时好多不必要的操作,此处只是列举了Mapper的通用接口 还有Service

还有很多强大的功能 需要的朋友还请移步官网

https://mp.baomidou.com/

项目地址

https://github.com/bnseed9527/mybatisplus

你可能感兴趣的:(MybatisPlus)