Mybatis-Flex各种查询,强烈建议收藏

🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主
📌 擅长领域:全栈工程师、爬虫、ACM算法,大数据,深度学习
💒 公众号:知识浅谈
🔥 微信:zsqtcyl 联系我领取福利


故事起因:项目被迫使用mybatis-flex,很无语,这个用着真不方便,但是还是要用,既然要用,那就来吧,总结一下,给后来的兄弟避避坑

🎈基础的查询

在 MyBatis-Flex 的 BaseMapper 中,提供了如下的功能用于查询数据库的数据:

selectOneById(id):根据主键查询数据。
selectOneByEntityId(entity):根据实体主键查询数据,便于对复合主键实体类的查询。
selectOneByMap(whereConditions):根据 Map 构建的条件来查询数据。
selectOneByCondition(whereConditions):根据查询条件查询数据。
selectOneByQuery(queryWrapper):根据查询条件来查询 1 条数据。
selectOneByQueryAs(queryWrapper, asType):根据查询条件来查询 1 条数据。
selectOneWithRelationsByMap(whereConditions):根据 Map 构建的条件来查询 1 条数据。
selectOneWithRelationsByCondition(whereConditions):根据查询条件查询 1 条数据。
selectOneWithRelationsByQuery(queryWrapper):根据查询条件来查询 1 条数据。
selectOneWithRelationsByQueryAs(queryWrapper, asType):根据查询条件来查询 1 条数据。
selectListByIds(ids):根据多个主键来查询多条数据。
selectListByMap(whereConditions):根据 Map 来构建查询条件,查询多条数据。
selectListByMap(whereConditions, count):根据 Map 来构建查询条件,查询多条数据。
selectListByCondition(whereConditions):根据查询条件查询多条数据。
selectListByCondition(whereConditions, count):根据查询条件查询多条数据。
selectListByQuery(queryWrapper):根据查询条件查询数据列表。
selectListByQuery(queryWrapper, consumers):根据查询条件查询数据列表。
selectCursorByQuery(queryWrapper):根据查询条件查询游标数据,该方法必须在事务中才能正常使用,非事务下无法获取数据。
selectRowsByQuery(queryWrapper):根据查询条件查询 Row 数据。
selectListByQueryAs(queryWrapper, asType):根据查询条件查询数据列表,要求返回的数据为 asType。这种场景一般用在 left join 时,有多出了实体类本身的字段内容,可以转换为 dto、vo 等场景。
selectListByQueryAs(queryWrapper, asType, consumers):根据查询条件查询数据列表,要求返回的数据为 asType 类型。
selectListWithRelationsByQuery(queryWrapper):查询实体类及其 Relation 注解字段。
selectListWithRelationsByQueryAs(queryWrapper, asType):查询实体类及其 Relation 注解字段。
selectListWithRelationsByQueryAs(queryWrapper, asType, consumers):查询实体类及其 Relation 注解字段。
selectAll():查询全部数据。
selectAllWithRelations():查询全部数据,及其 Relation 字段内容。
selectObjectByQuery(queryWrapper):查询第一列返回的数据,QueryWrapper 执行的结果应该只有 1 列,例如:QueryWrapper.create().select(ACCOUNT.id).where(…);
selectObjectByQueryAs(queryWrapper, asType):查询第一列返回的数据,QueryWrapper 执行的结果应该只有 1 列,例如:QueryWrapper.create().select(ACCOUNT.id).where(…);
selectObjectListByQuery(queryWrapper):查询第一列返回的数据集合,QueryWrapper 执行的结果应该只有 1 列,例如:QueryWrapper.create().select(ACCOUNT.id).where(…);
selectObjectListByQueryAs(queryWrapper, asType):查询第一列返回的数据集合,QueryWrapper 执行的结果应该只有 1 列,例如:QueryWrapper.create().select(ACCOUNT.id).where(…);
selectCountByQuery(queryWrapper):查询数据量。
selectCountByCondition(whereConditions):根据条件查询数据总量

🎈基础的新增

insert(entity):插入实体类数据,不忽略 null 值。
insertSelective(entity):插入实体类数据,但是忽略 null 的数据,只对有值的内容进行插入。这样的好处是数据库已经配置了一些默认值,这些默认值才会生效。
insert(entity, ignoreNulls):插入实体类数据。
insertWithPk(entity):插入带有主键的实体类,不忽略 null 值。
insertSelectiveWithPk(entity):插入带有主键的实体类,忽略 null 值。
insertWithPk(entity, ignoreNulls):带有主键的插入,此时实体类不会经过主键生成器生成主键。
insertBatch(entities):批量插入实体类数据,只会根据第一条数据来构建插入的字段内容。
insertBatch(entities, size):批量插入实体类数据,按 size 切分。
insertOrUpdate(entity):插入或者更新,若主键有值,则更新,若没有主键值,则插入,插入或者更新都不会忽略 null 值。
insertOrUpdateSelective(entity):插入或者更新,若主键有值,则更新,若没有主键值,则插入,插入或者更新都会忽略 null 值。
insertOrUpdate(entity, ignoreNulls):插入或者更新,若主键有值,则更新,若没有主键值,则插入。

🎈基础的更新

update(entity):根据主键来更新数据,若实体类属性数据为 null,该属性不会更新到数据库。
update(entity, ignoreNulls):根据主键来更新数据到数据库。
updateByMap(entity, whereConditions):根据 Map 构建的条件来更新数据。
updateByMap(entity, ignoreNulls, whereConditions):根据 Map 构建的条件来更新数据。
updateByCondition(entity, whereConditions):根据查询条件来更新数据。
updateByCondition(entity, ignoreNulls, whereConditions):根据查询条件来更新数据。
updateByQuery(entity, queryWrapper):根据查询条件来更新数据。
updateByQuery(entity, ignoreNulls, queryWrapper):根据查询条件来更新数据。

🎈基础的删除

deleteById(id):根据主键删除数据。如果是多个主键的情况下,需要传入数组,例如:new Integer[]{100,101}。
delete(entity):根据实体主键来删除数据。相比deleteById(id),此方法更便于对复合主键实体类的删除。
deleteBatchByIds(ids):根据多个主键批量删除数据。
deleteBatchByIds(ids, size):根据多个主键批量删除数据。
deleteByMap(whereConditions):根据 Map 构建的条件来删除数据。
deleteByCondition(whereConditions):根据查询条件来删除数据。
deleteByQuery(queryWrapper):根据查询条件来删除数据。

🎈特殊查询

select … as

QueryWrapper query = new QueryWrapper()
    .select(
          ACCOUNT.ID.as("accountId")
        , ACCOUNT.USER_NAME)
    .from(ACCOUNT.as("a"));

select function(SQL 函数:像是max,min,sum等)

QueryWrapper query = new QueryWrapper()
        .select(
            ACCOUNT.ID,
            ACCOUNT.USER_NAME,
            max(ACCOUNT.BIRTHDAY),
            avg(ACCOUNT.SEX).as("sex_avg")
        ).from(ACCOUNT);

where 动态条件

boolean flag = false;
QueryWrapper queryWrapper = QueryWrapper.create()
    .select().from(ACCOUNT)
    .where(ACCOUNT.ID.ge(100).when(flag)) //flag为false,忽略该条件
    .and(ACCOUNT.USER_NAME.like("michael"));

where 使用 SQL 函数

QueryWrapper qw = QueryWrapper.create();
qw.select(USER.ID,
    USER.USER_ALIAS,
    USER.PASSWORD,
    USER.USER_NAME.as("userName"))
    .where(
           QueryMethods.abs(USER.ID).eq(1)
    )
    .from(USER);

怎么写SQL语句

//举个例子
qw.select(USER.ID,
    USER.USER_ALIAS,
    USER.PASSWORD,
    USER.USER_NAME.as("userName"))
    .where("user.user_name='知识浅谈' and user.age="+age); //age作为你定义的变量

怎么使用统计函数

QueryWrapper qw = QueryWrapper.create();
qw.select(QueryMethods.count(*))
    .from(USER)
    .groupBy(USER.SEX)

终极大招点这里

🍚总结

大功告成,撒花致谢🎆🎇🌟,关注我不迷路,带你起飞带你富。
Writted By 知识浅谈

相关推荐

  1. Mybatis-Flex各种查询强烈建议收藏

    2024-07-10 17:32:02       33 阅读
  2. spring和Mybatis各种查询

    2024-07-10 17:32:02       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 17:32:02       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 17:32:02       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 17:32:02       90 阅读
  4. Python语言-面向对象

    2024-07-10 17:32:02       98 阅读

热门阅读

  1. Mybatis-plus学习

    2024-07-10 17:32:02       23 阅读
  2. mysql函数 last_insert_id()

    2024-07-10 17:32:02       28 阅读
  3. DateTimeUtils

    2024-07-10 17:32:02       24 阅读
  4. CSS:选择器 / 14种类型

    2024-07-10 17:32:02       28 阅读
  5. css中文字书写方向

    2024-07-10 17:32:02       26 阅读
  6. 19.JWT

    19.JWT

    2024-07-10 17:32:02      29 阅读
  7. 实证Stata代码命令汇总

    2024-07-10 17:32:02       21 阅读
  8. 将 build.gradle 配置从 Groovy 迁移到 Kotlin

    2024-07-10 17:32:02       26 阅读
  9. MySQL数据库字符集utf8mb4的排序规则介绍

    2024-07-10 17:32:02       29 阅读
  10. 人形机器人强化学习控制分类

    2024-07-10 17:32:02       26 阅读
  11. 小抄 20240708

    2024-07-10 17:32:02       26 阅读