BaseMapper接口的使用

这篇具有很好参考价值的文章主要介绍了BaseMapper接口的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

3、相关方法


3.1、BaseMapper接口

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

/**
 * Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能
 */
public interface BaseMapper<T> extends Mapper<T> {
    //插入一条记录
    int insert(T entity);
    //根据 ID 删除
    int deleteById(Serializable id);
    //根据实体(ID)删除
    int deleteById(T entity);
    //根据 columnMap 条件,删除记录
    int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
    // 删除记录,条件生成器根据entity生成where后的条件
    int delete(@Param(Constants.WRAPPER) Wrapper<T> 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<T> updateWrapper);
    //根据 ID 查询
    T selectById(Serializable id);
    //查询(根据ID 批量查询)
    List<T> selectBatchIds(@Param(Constants.COLL) Collection<? extends Serializable> idList);
    // 查询(根据 columnMap 条件)
    List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
    //查询一条记录
    default T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper) {
       .......
    }
    //根据 Wrapper 条件,判断是否存在记录
    default boolean exists(Wrapper<T> queryWrapper) {
 			.....
    }
    // 根据 Wrapper 条件,查询总记录数
    Long selectCount(@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 条件,查询全部记录(并翻页)
    <P extends IPage<T>> P selectPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
    //根据 Wrapper 条件,查询全部记录(并翻页)
    <P extends IPage<Map<String, Object>>> P selectMapsPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
}
3.1.1、新增

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

BaseMapper接口的使用

@Resource
private UserMapper userMapper;

@Test
public 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);


}

BaseMapper接口的使用

这个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;

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

BaseMapper接口的使用

3.1.2、删除

BaseMapper接口的使用

  1. 数据

  2. 删除一行数据

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

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

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

BaseMapper接口的使用

User user = userMapper.selectById(11);
System.out.println(user);

//对user进行修改
user.setUsername("修改");
user.setPassword("2131278");
int i = userMapper.updateById(user);
System.out.println("受影响行数:"+ i );

//修改后的User
User user1 = userMapper.selectById(11);
System.out.println(user1);
3.1.4、查询
  1. 查询一条数据

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

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

    //通过map条件查询
    Map<String , Object> map = new HashMap<>();
    map.put("username","root");
    List<User> users = userMapper.selectByMap(map);
    users.forEach(System.out::println);
    
  4. 查询所有数据文章来源地址https://www.toymoban.com/news/detail-475228.html

    //查询所有数据,参数为null
    List<User> users = userMapper.selectList(null);
    users.forEach(System.out::println);
    

到了这里,关于BaseMapper接口的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微机原理 || 8253接口芯片知识点+4道经典例题+手写解题过程

      【例1】 :  设825 3 端口地址为3 00H~303H, 要求计数器2工作在方式5,二进制计数, CLK2=2MHz , OUT2=1KHz。 试按上述要求完成825 3 的 初始化 。   【例2】: 选择计数器 0 工作于方式 3 ,计数初值为 1234 ,十进制计数方式;计数器 2 工作于方式 2 ,计数初值为 61H ,采用二进制

    2024年02月10日
    浏览(42)
  • 每个.NET开发都应掌握的C#接口知识点

    作为.NET开发者,接口是C#必须掌握的知识点,接口是C#中实现多态和组件间互操作性的关键机制之一。 接口是一种抽象的类型,它定义了一组成员(方法、属性、事件等)的规范,但没有实现代码。类可以实现一个或多个接口,以表明它们提供了特定的功能。 以下是每个.N

    2024年02月13日
    浏览(36)
  • 板卡设计+硬件每日学习十个知识点(44)23.8.24 (检测单元设计,接口部分设计,板卡电源输入设计,电源检测电路)

    答: 首先要为检测单元的单片机设计一个最小系统板,包括时钟、供电、调试JTAG、复位。 然后设计检测单元GD32的功能电路,包括温度监测、电压监测、电流监测、FPGA启动检测、PS侧的复位控制、LED状态灯。 最后是和PL侧使用I2C通信的通信电路。 这些让我设计的话,可能得

    2024年02月11日
    浏览(53)
  • 怎样使用CSS技术美化网页?(知识点2)

    知识引入 引入CSS样式表 CSS提供了行内式、内嵌式、外链式、导入式四种引入方式,具体介绍如下。 行内式 行内式也被称为内联样式,是通过标签的style属性来设置标签的样式,其基本语法格式如下。 标签名 style=“属性:属性值;”内容/标签名 Style是标签的属性,任何HTM

    2024年01月23日
    浏览(28)
  • Eplan使用过程中的知识点1

    一、新建时的几种标准模板 EPLAN中的符号库符合国际标准,分为单线图和原理图符号库。 符号库符合GB(国标)、IEC(国际标准)、NFPA(美国标准)和GOST(俄罗斯标准)4大标准。对应的4大标准的符号库分别为GB_symbol、IEC_symbol、NFPA_symbol、GOST_symbol。 二、EPLAN的系统主数据包

    2024年02月12日
    浏览(27)
  • 每天一个知识点 - 了解和使用super关键字

    super是一个,super和this很类似 可以使用 super() 函数访问父类的构造函数,从而委托父类完成一些初始化的工作 如果子类重写了父类的中某个方法的实现,可以通过使用 super 来引用父类的方法实现        super( )函数是用于调用父类的一个方法,指向了当前对象自

    2024年02月21日
    浏览(35)
  • 后端常使用的中间件知识点--持续更新

    类型 难度 mysql mysql中SQL优化:多角度分析 包学包会,sql优化全过程,刨根分析 redis 多角度剖析redis数据结构及底层实现原理、应用场景 MQ 简单大体说明RabbitMQ的使用(简单版) mybatis 使用JDBC的批量插入百万数据要多少秒 一遍就会的,从0开始在springboot上使用Mybatis对数据库进

    2024年02月13日
    浏览(29)
  • 使用es必须要知道的一些知识点:索引篇

    在当今数据驱动的世界中,Elasticsearch(简称ES)成为了一个强大而广泛应用的搜索和分析引擎。ES提供了快速、可扩展且高度可靠的数据存储和检索解决方案。然而,要真正掌握ES的各种功能和最佳实践,需要通过实践才能获得真正的知识。 在Elasticsearch(ES)中,index操作和

    2024年02月08日
    浏览(29)
  • 轻松掌握k8s(使用docker)安装知识点

    kubernetes具有以下特性: 服务发现和负载均衡 Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。 存储编排 Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。

    2023年04月22日
    浏览(35)
  • 开源PDF工具 Apache PDFBox 认识及使用(知识点+案例)

    博主介绍:✌目前全网粉丝2W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容:Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。 博主所有博客文件目录索引:博客目录索引(持续更新) 视频平台:

    2024年02月20日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包