文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

BaseMapper接口的使用

2023-08-17 14:04

关注

Java知识点总结:想看的可以从这里进入

3、相关方法


3.1、BaseMapper接口

MyBatis-Plus中的基本CRUD在内置的 BaseMapper 中都已得到了实现,我们可以直接使用,这样大大的简化了开发效率。

public interface BaseMapper extends Mapper {    //插入一条记录    int insert(T entity);    //根据 ID 删除    int deleteById(Serializable id);    //根据实体(ID)删除    int deleteById(T entity);    //根据 columnMap 条件,删除记录    int deleteByMap(@Param(Constants.COLUMN_MAP) Map columnMap);    // 删除记录,条件生成器根据entity生成where后的条件    int delete(@Param(Constants.WRAPPER) Wrapper queryWrapper);    //删除(根据ID或实体 批量删除)    int deleteBatchIds(@Param(Constants.COLL) Collection idList);    // 根据 ID 修改    int updateById(@Param(Constants.ENTITY) T entity);    // 根据 whereEntity 条件,更新记录    int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper updateWrapper);    //根据 ID 查询    T selectById(Serializable id);    //查询(根据ID 批量查询)    List selectBatchIds(@Param(Constants.COLL) Collection idList);    // 查询(根据 columnMap 条件)    List selectByMap(@Param(Constants.COLUMN_MAP) Map columnMap);    //查询一条记录    default T selectOne(@Param(Constants.WRAPPER) Wrapper queryWrapper) {       .......    }    //根据 Wrapper 条件,判断是否存在记录    default boolean exists(Wrapper queryWrapper) { .....    }    // 根据 Wrapper 条件,查询总记录数    Long selectCount(@Param(Constants.WRAPPER) Wrapper queryWrapper);    //根据 entity 条件,查询全部记录    List selectList(@Param(Constants.WRAPPER) Wrapper queryWrapper);    //根据 Wrapper 条件,查询全部记录    List> selectMaps(@Param(Constants.WRAPPER) Wrapper queryWrapper);    //根据 Wrapper 条件,查询全部记录    List selectObjs(@Param(Constants.WRAPPER) Wrapper queryWrapper);    // 根据 entity 条件,查询全部记录(并翻页)    

> P selectPage(P page, @Param(Constants.WRAPPER) Wrapper queryWrapper); //根据 Wrapper 条件,查询全部记录(并翻页)

>> P selectMapsPage(P page, @Param(Constants.WRAPPER) Wrapper queryWrapper);}

3.1.1、新增

在封装的 BaseMapper 中只有一个插入语句,因为海量数据插入单条SQL无法实行,所以mybatis-plus 把批量插入放在了Service 层对应的封装接口里了。

image-20230306112758056

@Resourceprivate UserMapper userMapper;@Testpublic void test2(){//新增数据    User user1 = new User();    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);}

image-20230305162006466

这个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)private Integer userId;

设置完成后,将数据库之前测试的数据删除,重新运行一下

image-20230305163033074

3.1.2、删除

image-20230305163710348

  1. 数据

    image-20230305165241607
  2. 删除一行数据

    //通过id删除一行数据int i = userMapper.deleteById(15);System.out.println("受影响行数:"+i);
    image-20230305164213194
  3. 批量删除

    //批量删除List idList = Arrays.asList(16,17, 18);int i1 = userMapper.deleteBatchIds(idList);System.out.println("受影响行数:"+i1 );
    image-20230305164407038
  4. 通过Map设置条件

    //根据条件删除Map map = new HashMap<>();map.put("username","新增");map.put("password","456454");//删除username为新增,且password为456454的数据int i = userMapper.deleteByMap(map);System.out.println("受影响行数:"+ i );
    image-20230305164924035

3.1.3、修改

image-20230305165531886

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);
image-20230305165925564

3.1.4、查询

image-20230305171506899
  1. 查询一条数据

    //根据ID查询User user = userMapper.selectById(1);System.out.println(user);//根据 LambdaQueryWrapper 的条件查询User user1 = userMapper.selectOne(new LambdaQueryWrapper().like(User::getUsername,"root"));System.out.println(user1);
    image-20230305172440166
  2. 根据ID批量查询

    //根据ID批量查询List list = Arrays.asList(1, 2, 3);List users = userMapper.selectBatchIds(list);users.forEach(System.out::println);
    image-20230305172625364
  3. 通过map条件查询,键值对应数据的字段和值。

    //通过map条件查询Map map = new HashMap<>();map.put("username","root");List users = userMapper.selectByMap(map);users.forEach(System.out::println);
    image-20230305172929169
  4. 查询所有数据

    //查询所有数据,参数为nullList users = userMapper.selectList(null);users.forEach(System.out::println);
    image-20230305173131920

来源地址:https://blog.csdn.net/yuandfeng/article/details/129660626

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧