Java知识点总结:想看的可以从这里进入
目录
3、相关方法
3.1、BaseMapper接口
MyBatis-Plus中的基本CRUD在内置的 BaseMapper 中都已得到了实现,我们可以直接使用,这样大大的简化了开发效率。
/**
* Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能
*/publicinterfaceBaseMapper<T>extendsMapper<T>{//插入一条记录intinsert(T entity);//根据 ID 删除intdeleteById(Serializable id);//根据实体(ID)删除intdeleteById(T entity);//根据 columnMap 条件,删除记录intdeleteByMap(@Param(Constants.COLUMN_MAP)Map<String,Object> columnMap);// 删除记录,条件生成器根据entity生成where后的条件intdelete(@Param(Constants.WRAPPER)Wrapper<T> queryWrapper);//删除(根据ID或实体 批量删除)intdeleteBatchIds(@Param(Constants.COLL)Collection<?> idList);// 根据 ID 修改intupdateById(@Param(Constants.ENTITY)T entity);// 根据 whereEntity 条件,更新记录intupdate(@Param(Constants.ENTITY)T entity,@Param(Constants.WRAPPER)Wrapper<T> updateWrapper);//根据 ID 查询TselectById(Serializable id);//查询(根据ID 批量查询)List<T>selectBatchIds(@Param(Constants.COLL)Collection<?extendsSerializable> idList);// 查询(根据 columnMap 条件)List<T>selectByMap(@Param(Constants.COLUMN_MAP)Map<String,Object> columnMap);//查询一条记录defaultTselectOne(@Param(Constants.WRAPPER)Wrapper<T> queryWrapper){.......}//根据 Wrapper 条件,判断是否存在记录defaultbooleanexists(Wrapper<T> queryWrapper){.....}// 根据 Wrapper 条件,查询总记录数LongselectCount(@Param(Constants.WRAPPER)Wrapper<T> queryWrapper);//根据 entity 条件,查询全部记录List<T>selectList(@Param(Constants.WRAPPER)Wrapper<T> queryWrapper);//根据 Wrapper 条件,查询全部记录List<Map<String,Object>>selectMaps(@Param(Constants.WRAPPER)Wrapper<T> queryWrapper);//根据 Wrapper 条件,查询全部记录List<Object>selectObjs(@Param(Constants.WRAPPER)Wrapper<T> queryWrapper);// 根据 entity 条件,查询全部记录(并翻页)<PextendsIPage<T>>PselectPage(P page,@Param(Constants.WRAPPER)Wrapper<T> queryWrapper);//根据 Wrapper 条件,查询全部记录(并翻页)<PextendsIPage<Map<String,Object>>>PselectMapsPage(P page,@Param(Constants.WRAPPER)Wrapper<T> queryWrapper);}
3.1.1、新增
在封装的 BaseMapper 中只有一个插入语句,因为海量数据插入单条SQL无法实行,所以mybatis-plus 把批量插入放在了Service 层对应的封装接口里了。
@ResourceprivateUserMapper userMapper;@Testpublicvoidtest2(){//新增数据User user1 =newUser();
user1.setUsername("mybatisplus测试");
user1.setPassword("12312312");int insert = userMapper.insert(user1);System.out.println("受影响行数:"+insert);//自动获取id(默认使用雪花算法生成的id)Integer id = user1.getUserId();//获取数据User user = userMapper.selectById(id);System.out.println(user);}
这个ID是MyBatis-Plus基于雪花算法生成的一个ID。之所以会为负数,是因为数据库设置的是自增,而在User实体类中没有进行设置
//IdType.ID_WORKER_STR 默认的;底层使用了雪花算法;类型为Integer//IdType.AUTO 数据库自增;数据库上必须设置为自增//IdType.NONE 没有设置主键类型;跟随全局;全局的主键策略如果没有设置,默认是雪花算法//IdType.INPUT 手动输入;必须手动输入,数据库自增也没用;//IdType.UUID 全局唯一id;无序;字符串;//ID_WORKER_STR 全局唯一(idWorker的字符串表示);@TableId(value ="user_id",type =IdType.AUTO)privateInteger userId;
设置完成后,将数据库之前测试的数据删除,重新运行一下
3.1.2、删除
- 数据
- 删除一行数据
//通过id删除一行数据int i = userMapper.deleteById(15);System.out.println("受影响行数:"+i);
- 批量删除
//批量删除List<Integer> idList =Arrays.asList(16,17,18);int i1 = userMapper.deleteBatchIds(idList);System.out.println("受影响行数:"+i1 );
- 通过Map设置条件
//根据条件删除Map<String,Object> map =newHashMap<>();map.put("username","新增");map.put("password","456454");//删除username为新增,且password为456454的数据int i = userMapper.deleteByMap(map);System.out.println("受影响行数:"+ i );
3.1.3、修改
User user = userMapper.selectById(11);System.out.println(user);//对user进行修改
user.setUsername("修改");
user.setPassword("2131278");int i = userMapper.updateById(user);System.out.println("受影响行数:"+ i );//修改后的UserUser user1 = userMapper.selectById(11);System.out.println(user1);
3.1.4、查询
- 查询一条数据
//根据ID查询User user = userMapper.selectById(1);System.out.println(user);//根据 LambdaQueryWrapper 的条件查询User user1 = userMapper.selectOne(newLambdaQueryWrapper<User>().like(User::getUsername,"root"));System.out.println(user1);
- 根据ID批量查询
//根据ID批量查询List<Integer> list =Arrays.asList(1,2,3);List<User> users = userMapper.selectBatchIds(list);users.forEach(System.out::println);
- 通过map条件查询,键值对应数据的字段和值。
//通过map条件查询Map<String,Object> map =newHashMap<>();map.put("username","root");List<User> users = userMapper.selectByMap(map);users.forEach(System.out::println);
- 查询所有数据
//查询所有数据,参数为nullList<User> users = userMapper.selectList(null);users.forEach(System.out::println);
版权归原作者 辰 羽 所有, 如有侵权,请联系我们删除。