BaseMapper接口的使用方法

 更新时间:2023年12月13日 15:29:43   作者:辰 羽  
这篇文章主要介绍了BaseMapper接口的使用方法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

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 层对应的封装接口里了。

@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);
}

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

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

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 = new HashMap<>();
map.put("username","新增");
map.put("password","456454");
//删除username为新增,且password为456454的数据
int i = userMapper.deleteByMap(map);
System.out.println("受影响行数:"+ i );

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 );
//修改后的User
User 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(new LambdaQueryWrapper<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 = new HashMap<>();
map.put("username","root");
List<User> users = userMapper.selectByMap(map);
users.forEach(System.out::println);

查询所有数据

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

到此这篇关于BaseMapper接口的使用的文章就介绍到这了,更多相关BaseMapper接口的使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中ThreadLocal的使用

    Java中ThreadLocal的使用

    这篇文章主要介绍了Java中ThreadLocal的使用,静态内部类的加载是在程序中调用静态内部类的时候加载的,和外部类的加载没有必然关系, 但是在加载静态内部类的时候 发现外部类还没有加载,那么就会先加载外部类 ,加载完外部类之后,再加载静态内部类,需要的朋友可以参考下
    2023-09-09
  • Springboot整合quartz实现多个定时任务实例

    Springboot整合quartz实现多个定时任务实例

    这篇文章主要介绍了Springboot整合quartz实现多个定时任务代码实例,Quartz 是一款功能强大的开源任务调度框架,几乎可以集成到任何 Java 应用程序中,Quartz 可用于创建简单或复杂的任务调度,用以执行数以万计的任务,需要的朋友可以参考下
    2023-08-08
  • springBoot无法解析yml问题

    springBoot无法解析yml问题

    这篇文章主要介绍了springBoot无法解析yml问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • IDEA 将 SpringBoot 项目打包成jar的方法

    IDEA 将 SpringBoot 项目打包成jar的方法

    这篇文章主要介绍了IDEA 将 SpringBoot 项目打包成jar的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Spring @Bean vs @Service注解区别

    Spring @Bean vs @Service注解区别

    本篇文章主要介绍了Spring @Bean vs @Service注解区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Java(SpringBoot)项目打包(构建)成Docker镜像的几种常见方式

    Java(SpringBoot)项目打包(构建)成Docker镜像的几种常见方式

    在对Spring Boot应用程序进行Docker化时,为应用程序选择正确的基础镜像非常重要,下面这篇文章主要给大家介绍了关于Java(SpringBoot)项目打包(构建)成Docker镜像的几种常见方式,需要的朋友可以参考下
    2023-12-12
  • MybatisPlus字段自动填充失效,填充值为null的解决方案

    MybatisPlus字段自动填充失效,填充值为null的解决方案

    这篇文章主要介绍了MybatisPlus字段自动填充失效,填充值为null的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Dapr在Java中的服务调用实战过程详解

    Dapr在Java中的服务调用实战过程详解

    这篇文章主要为大家介绍了Dapr在Java中的服务调用实战过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Echarts+SpringMvc显示后台实时数据

    Echarts+SpringMvc显示后台实时数据

    这篇文章主要为大家详细介绍了Echarts+SpringMvc显示后台实时数据,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 解决json字符串序列化后的顺序问题

    解决json字符串序列化后的顺序问题

    这篇文章主要介绍了解决json字符串序列化后的顺序问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论