码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Plus】三、BaseMapper


    文章目录

      • 1、BaseMapper接口
      • 2、测试
        • 2.1、`insert(T)`: int
        • 2.2、`deleteById(Serializable)`: int
        • 2.3、`deleteById(T)`: int
        • 2.4、`deleteByMap(Map)`: int
        • 2.5、`delete(Wrapper)`: int
        • 2.6、`deleteBatchIds(Collection)`: int
        • 2.7、`updateById(T)`: int
        • 2.8、`update(T, Wrapper)`: int
        • 2.9、`selectById(Serializable)`: T
        • 2.10、`selectBatchIds(Collection idList)`: `List`
        • 2.11、`selectByMap(Map)`: `List`
        • 2.12、`selectOne(Wrapper)`: T
        • 2.13、`exists(Wrapper)`: boolean
        • 2.14、`selectCount(Wrapper)`: Long
        • 2.15、`selectList(Wrapper)`: `List`
        • 2.16、`selectMaps(Wrapper)`: `List>`
        • 2.17、`selectObjs(Wrapper)`: `List`
        • 2.18、`selectPage(P, Wrapper)`: P
        • 2.19、`selectMapsPage(P,Wrapper) `: P
        • 1、BaseMapper接口

          点击 BaseMapper 访问官网!

          /**
           * Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能
           * 

          这个 Mapper 支持 id 泛型

          * * @author hubin * @since 2016-01-23 */
          public interface BaseMapper<T> extends Mapper<T> { /** * 插入一条记录 * * @param entity 实体对象 */ int insert(T entity); /** * 根据 ID 删除 * * @param id 主键ID */ int deleteById(Serializable id); /** * 根据实体(ID)删除 * * @param entity 实体对象 * @since 3.4.4 */ int deleteById(T entity); /** * 根据 columnMap 条件,删除记录 * * @param columnMap 表字段 map 对象 */ int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap); /** * 根据 entity 条件,删除记录 * * @param queryWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句) */ int delete(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * 删除(根据ID或实体 批量删除) * * @param idList 主键ID列表或实体列表(不能为 null 以及 empty) */ int deleteBatchIds(@Param(Constants.COLLECTION) Collection<?> idList); /** * 根据 ID 修改 * * @param entity 实体对象 */ int updateById(@Param(Constants.ENTITY) T entity); /** * 根据 whereEntity 条件,更新记录 * * @param entity 实体对象 (set 条件值,可以为 null) * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句) */ int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper); /** * 根据 ID 查询 * * @param id 主键ID */ T selectById(Serializable id); /** * 查询(根据ID 批量查询) * * @param idList 主键ID列表(不能为 null 以及 empty) */ List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList); /** * 查询(根据 columnMap 条件) * * @param columnMap 表字段 map 对象 */ List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap); /** * 根据 entity 条件,查询一条记录 *

          查询一条记录,例如 qw.last("limit 1") 限制取一条记录, 注意:多条数据会报异常

          * * @param queryWrapper 实体对象封装操作类(可以为 null) */
          default T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper) { List<T> ts = this.selectList(queryWrapper); if (CollectionUtils.isNotEmpty(ts)) { if (ts.size() != 1) { throw ExceptionUtils.mpe("One record is expected, but the query result is multiple records"); } return ts.get(0); } return null; } /** * 根据 Wrapper 条件,判断是否存在记录 * * @param queryWrapper 实体对象封装操作类 * @return */ default boolean exists(Wrapper<T> queryWrapper) { Long count = this.selectCount(queryWrapper); return null != count && count > 0; } /** * 根据 Wrapper 条件,查询总记录数 * * @param queryWrapper 实体对象封装操作类(可以为 null) */ Long selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * 根据 entity 条件,查询全部记录 * * @param queryWrapper 实体对象封装操作类(可以为 null) */ List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * 根据 Wrapper 条件,查询全部记录 * * @param queryWrapper 实体对象封装操作类(可以为 null) */ List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * 根据 Wrapper 条件,查询全部记录 *

          注意: 只返回第一个字段的值

          * * @param queryWrapper 实体对象封装操作类(可以为 null) */
          List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * 根据 entity 条件,查询全部记录(并翻页) * * @param page 分页查询条件(可以为 RowBounds.DEFAULT) * @param queryWrapper 实体对象封装操作类(可以为 null) */ <P extends IPage<T>> P selectPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper); /** * 根据 Wrapper 条件,查询全部记录(并翻页) * * @param page 分页查询条件 * @param queryWrapper 实体对象封装操作类 */ <P extends IPage<Map<String, Object>>> P selectMapsPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper); }
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
          • 31
          • 32
          • 33
          • 34
          • 35
          • 36
          • 37
          • 38
          • 39
          • 40
          • 41
          • 42
          • 43
          • 44
          • 45
          • 46
          • 47
          • 48
          • 49
          • 50
          • 51
          • 52
          • 53
          • 54
          • 55
          • 56
          • 57
          • 58
          • 59
          • 60
          • 61
          • 62
          • 63
          • 64
          • 65
          • 66
          • 67
          • 68
          • 69
          • 70
          • 71
          • 72
          • 73
          • 74
          • 75
          • 76
          • 77
          • 78
          • 79
          • 80
          • 81
          • 82
          • 83
          • 84
          • 85
          • 86
          • 87
          • 88
          • 89
          • 90
          • 91
          • 92
          • 93
          • 94
          • 95
          • 96
          • 97
          • 98
          • 99
          • 100
          • 101
          • 102
          • 103
          • 104
          • 105
          • 106
          • 107
          • 108
          • 109
          • 110
          • 111
          • 112
          • 113
          • 114
          • 115
          • 116
          • 117
          • 118
          • 119
          • 120
          • 121
          • 122
          • 123
          • 124
          • 125
          • 126
          • 127
          • 128
          • 129
          • 130
          • 131
          • 132
          • 133
          • 134
          • 135
          • 136
          • 137
          • 138
          • 139
          • 140
          • 141
          • 142
          • 143
          • 144
          • 145
          • 146
          • 147
          • 148
          • 149
          • 150
          • 151
          • 152
          • 153
          • 154
          • 155
          • 156
          • 157
          • 158
          • 159
          • 160
          • 161

          2、测试

          2.1、insert(T): int

          User user = new User(null, "Ami", 20, "999@mm.com");
          System.out.println("结果:" + userMapper.insert(user));
          System.out.println(user);
          
          • 1
          • 2
          • 3
          ==>  Preparing: INSERT INTO user ( id, name, age, email ) VALUES ( ?, ?, ?, ? )
          ==> Parameters: 1583712489828356098(Long), Ami(String), 20(Integer), 999@mm.com(String)
          <==    Updates: 1
          结果:1
          User(id=1583712489828356098, name=Ami, age=20, email=999@mm.com)
          
          • 1
          • 2
          • 3
          • 4
          • 5

          第一次用的小伙伴肯定很好奇,我没有给表主键设置自增,我也没给主键赋值,为何主键会有值呢?

          MP默认使用雪花算法给主键赋值

          2.2、deleteById(Serializable): int

          System.out.println("结果:" + userMapper.deleteById(1583712489828356098L));
          
          • 1
          ==>  Preparing: DELETE FROM user WHERE id=?
          ==> Parameters: 1583712489828356098(Long)
          <==    Updates: 1
          结果:1
          
          • 1
          • 2
          • 3
          • 4

          2.3、deleteById(T): int

          User user = new User(1583717556941848577L, null, null, null);
          System.out.println("结果:" + userMapper.deleteById(user));
          
          • 1
          • 2

          结果与2.2如出一辙

          2.4、deleteByMap(Map): int

          Map<String, Object> map = new HashMap<>();
          map.put("name", "张三");
          map.put("age", 20);
          System.out.println("结果:" + userMapper.deleteByMap(map));
          
          • 1
          • 2
          • 3
          • 4
          ==>  Preparing: DELETE FROM user WHERE name = ? AND age = ?
          ==> Parameters: 张三(String), 20(Integer)
          <==    Updates: 0
          结果:0
          
          • 1
          • 2
          • 3
          • 4

          2.5、delete(Wrapper): int

          System.out.println("结果:" + userMapper.delete(new QueryWrapper<User>().eq("id", 1L)));
          
          • 1
          ==>  Preparing: DELETE FROM user WHERE (id = ?)
          ==> Parameters: 1(Long)
          <==    Updates: 1
          结果:1
          
          • 1
          • 2
          • 3
          • 4

          2.6、deleteBatchIds(Collection): int

          System.out.println("结果:" + userMapper.deleteBatchIds(Arrays.asList(1L, 2L, 3L)));
          
          • 1
          ==>  Preparing: DELETE FROM user WHERE id IN ( ? , ? , ? )
          ==> Parameters: 1(Long), 2(Long), 3(Long)
          <==    Updates: 3
          结果:3
          
          • 1
          • 2
          • 3
          • 4

          2.7、updateById(T): int

          User user = new User();
          user.setId(4L);
          user.setName("嘎嘎嘎");
          user.setAge(3);
          user.setEmail("gagaga@gaga.com");
          System.out.println("结果:" + userMapper.updateById(user));
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          ==>  Preparing: UPDATE user SET name=?, age=?, email=? WHERE id=?
          ==> Parameters: 嘎嘎嘎(String), 3(Integer), gagaga@gaga.com(String), 4(Long)
          <==    Updates: 1
          结果:1
          
          • 1
          • 2
          • 3
          • 4

          2.8、update(T, Wrapper): int

          User user = new User();
          user.setId(400L);
          user.setName("咕咕咕");
          user.setAge(16);
          user.setEmail("gugugu@gugu.com");
          System.out.println("结果:" + userMapper.update(user, 
                                                       new UpdateWrapper<User>().eq("id", 4L)));
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          ==>  Preparing: UPDATE user SET name=?, age=?, email=? WHERE (id = ?)
          ==> Parameters: 咕咕咕(String), 16(Integer), gugugu@gugu.com(String), 4(Long)
          <==    Updates: 1
          结果:1
          
          • 1
          • 2
          • 3
          • 4

          2.9、selectById(Serializable): T

          System.out.println("结果:" + userMapper.selectById(4L));
          
          • 1
          ==>  Preparing: SELECT id,name,age,email FROM user WHERE id=?
          ==> Parameters: 4(Long)
          <==    Columns: id, name, age, email
          <==        Row: 4, 嘎嘎嘎, 3, gagaga@gaga.com
          <==      Total: 1
          结果:User(id=4, name=嘎嘎嘎, age=3, email=gagaga@gaga.com)
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6

          2.10、selectBatchIds(Collection idList): List

          userMapper.selectBatchIds(Arrays.asList(1L, 2L, 3L)).forEach(System.out::println);
          
          • 1
          ==>  Preparing: SELECT id,name,age,email FROM user WHERE id IN ( ? , ? , ? )
          ==> Parameters: 1(Long), 2(Long), 3(Long)
          <==    Columns: id, name, age, email
          <==        Row: 1, lili, 19, lili@lili.com
          <==        Row: 2, 小明, 12, xxx@xxx.com
          <==        Row: 3, 小黑, 20, hhi@hi.com
          <==      Total: 3
          User(id=1, name=lili, age=19, email=lili@lili.com)
          User(id=2, name=小明, age=12, email=xxx@xxx.com)
          User(id=3, name=小黑, age=20, email=hhi@hi.com)
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10

          2.11、selectByMap(Map): List

          Map<String, Object> map = new HashMap<>();
          map.put("name", "嘎嘎嘎");
          map.put("age", 3);
          userMapper.selectByMap(map).forEach(System.out::println);
          
          • 1
          • 2
          • 3
          • 4
          ==>  Preparing: SELECT id,name,age,email FROM user WHERE name = ? AND age = ?
          ==> Parameters: 嘎嘎嘎(String), 3(Integer)
          <==    Columns: id, name, age, email
          <==        Row: 4, 嘎嘎嘎, 3, gagaga@gaga.com
          <==      Total: 1
          User(id=4, name=嘎嘎嘎, age=3, email=gagaga@gaga.com)
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6

          2.12、selectOne(Wrapper): T

          System.out.println("结果:" + userMapper.selectOne(new QueryWrapper<User>().eq("id", 1L)));
          
          • 1
          ==>  Preparing: SELECT id,name,age,email FROM user WHERE (id = ?)
          ==> Parameters: 1(Long)
          <==    Columns: id, name, age, email
          <==        Row: 1, lili, 19, lili@lili.com
          <==      Total: 1
          结果:User(id=1, name=lili, age=19, email=lili@lili.com)
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6

          2.13、exists(Wrapper): boolean

          System.out.println("结果:" + userMapper.exists(new QueryWrapper<User>().eq("id", 1L)));
          
          • 1
          ==>  Preparing: SELECT COUNT( * ) FROM user WHERE (id = ?)
          ==> Parameters: 1(Long)
          <==    Columns: COUNT( * )
          <==        Row: 1
          <==      Total: 1
          结果:true
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6

          2.14、selectCount(Wrapper): Long

          System.out.println("结果:" + userMapper.selectCount(new QueryWrapper<User>().eq("id", 1L)));
          
          • 1
          ==>  Preparing: SELECT COUNT( * ) FROM user WHERE (id = ?)
          ==> Parameters: 1(Long)
          <==    Columns: COUNT( * )
          <==        Row: 1
          <==      Total: 1
          结果:1
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6

          2.15、selectList(Wrapper): List

          userMapper.selectList(new QueryWrapper<User>().eq("age", 20)).forEach(System.out::println);
          
          • 1
          ==>  Preparing: SELECT id,name,age,email FROM user WHERE (age = ?)
          ==> Parameters: 20(Integer)
          <==    Columns: id, name, age, email
          <==        Row: 3, 小黑, 20, hhi@hi.com
          <==        Row: 1583722107052756994, Ami, 20, 999@mm.com
          <==        Row: 1583722317866962946, 王五, 20, wangwu@mm.com
          <==      Total: 3
          User(id=3, name=小黑, age=20, email=hhi@hi.com)
          User(id=1583722107052756994, name=Ami, age=20, email=999@mm.com)
          User(id=1583722317866962946, name=王五, age=20, email=wangwu@mm.com)
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10

          2.16、selectMaps(Wrapper): List>

          userMapper.selectMaps(new QueryWrapper<User>().eq("age", 20)).forEach(System.out::println);
          
          • 1

          结果与2.15如出一辙

          2.17、selectObjs(Wrapper): List
          userMapper.selectObjs(new QueryWrapper<User>().eq("age", 20)).forEach(System.out::println);
          
          • 1
          <==    Columns: id, name, age, email
          <==        Row: 3, 小黑, 20, hhi@hi.com
          <==        Row: 1583722107052756994, Ami, 20, 999@mm.com
          <==        Row: 1583722317866962946, 王五, 20, wangwu@mm.com
          <==      Total: 3
          3
          1583722107052756994
          1583722317866962946
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8

          2.18、selectPage(P, Wrapper): P

          userMapper.selectPage(new Page(1, 5), new QueryWrapper<User>().ne("id", 1L));
          
          • 1
          ==>  Preparing: SELECT id,name,age,email FROM user WHERE (id <> ?)
          ==> Parameters: 1(Long)
          <==    Columns: id, name, age, email
          <==        Row: 2, 小明, 12, xxx@xxx.com
          <==        Row: 3, 小黑, 20, hhi@hi.com
          <==        Row: 4, 咕咕咕, 16, gugugu@gugu.com
          <==        Row: 5, Billie, 24, test5@baomidou.com
          <==        Row: 1583722107052756994, Ami, 20, 999@mm.com
          <==        Row: 1583722178544787457, 张三, 22, zs@mm.com
          <==        Row: 1583722246144348161, 李四, 21, lisi@mm.com
          <==        Row: 1583722317866962946, 王五, 20, wangwu@mm.com
          <==        Row: 1583722690497302529, 赵六, 22, zliu@mm.com
          <==      Total: 9
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13

          2.19、selectMapsPage(P,Wrapper) : P

          userMapper.selectMapsPage(new Page(1, 5), new QueryWrapper<User>().ne("id", 1L));
          
          • 1

          结果与2.18如出一辙

        • 相关阅读:
          字符串函数
          如何抑制告警风暴?
          《自然语言处理》第一次实验:TextCNN情感分类
          CenterPoint 源码流程解读(二)
          Base64编码知识记录
          java项目:基于Springboot+Vue+Element实现汽车租赁系统
          Vite 配置 Eslint 规范代码
          C++入门 第一篇(C++关键字, 命名空间,C++输入&输出)
          vscode中编码错误
          lua基础之时间
        • 原文地址:https://blog.csdn.net/qq_30769437/article/details/127461665
          • 最新文章
          • 攻防演习之三天拿下官网站群
            数据安全治理学习——前期安全规划和安全管理体系建设
            企业安全 | 企业内一次钓鱼演练准备过程
            内网渗透测试 | Kerberos协议及其部分攻击手法
            0day的产生 | 不懂代码的"代码审计"
            安装scrcpy-client模块av模块异常,环境问题解决方案
            leetcode hot100【LeetCode 279. 完全平方数】java实现
            OpenWrt下安装Mosquitto
            AnatoMask论文汇总
            【AI日记】24.11.01 LangChain、openai api和github copilot
          • 热门文章
          • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
            奉劝各位学弟学妹们,该打造你的技术影响力了!
            五年了,我在 CSDN 的两个一百万。
            Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
            面试官都震惊,你这网络基础可以啊!
            你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
            心情不好的时候,用 Python 画棵樱花树送给自己吧
            通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
            13 万字 C 语言从入门到精通保姆级教程2021 年版
            10行代码集2000张美女图,Python爬虫120例,再上征途
          Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
          正则表达式工具 cron表达式工具 密码生成工具

          京公网安备 11010502049817号