• mybatis 或 mybatis-plus 执行 sql 的三种方式


    前言:

    mybatis 是目前非常流行的数据库框架,mybatis-plus 是 mybatis 的增强版(只做增强,不做改变),有兴趣的可以研究下。

    方式一:

    配置 xml 文件,该方式是比较通用的方法,适合任何 sql 语句(尤其是复杂 sql)。

    
    
    
    
        
    
    
    
    • 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

    注:大于号、小于号的写法:

    原sql语句符号

    转义符号

    >

    >

    >=

    >=

    <

    <

    <=

    <=

    方式二:

    使用 @Select 注解,该方式适合比较简单的 sql 语句,使用起来比较简单。

        @Select("select dept_code,dept_name from dept_info where source = #{source}")
        List getDeptBySource(@Param("source") Integer source);
    
    • 1
    • 2

    方式三:

    SqlSession 执行 sql,稍微复杂,不到万不得已不建议使用。mybatis-plus 很人性化的处理了增删改查,该方法适合不想做任何配置的人。

    【可参考整合 mybatis-plus 和分页查询功能到 springboot_-CSDN博客整合 mybatis-plus】。

    各种 Wrapper 用于构造条件:

    Wrapper

    说明

    Wrapper

    条件构造抽象类,最顶端父类

    AbstractWrapper

    用于查询条件封装,生成 sql 的 where 条件

    QueryWrapper

    查询条件封装,不是用lambda语法

    UpdateWrapper

    更新条件封装,用于对象更新操作

    AbstractLambdaWrapper

    Lambda 语法使用 Wrapper统一处理解析

    LambdaQueryWrapper

    Lambda语法使用的查询Wrapper

    LambdaUpdateWrapper

    Lambda 更新封装Wrapper

    条件语句:

    查询方式

    说明

    setSqlSelect

    设置 SELECT 查询字段

    where

    WHERE 语句,拼接 +WHERE 条件

    and

    AND 语句,拼接 +AND 字段=值

    andNew

    AND 语句,拼接 +AND (字段=值)

    or

    OR 语句,拼接 +OR 字段=值

    orNew

    OR 语句,拼接 +OR (字段=值)

    eq

    等于=

    allEq

    基于 map 内容等于=

    ne

    不等于<>

    gt

    大于>

    ge

    大于等于>=

    lt

    小于<

    le

    小于等于<=

    like

    模糊查询 LIKE

    notLike

    模糊查询 NOT LIKE

    in

    IN 查询

    notIn

    NOT IN 查询

    isNull

    NULL 值查询

    isNotNull

    IS NOT NULL

    groupBy

    分组 GROUP BY

    having

    HAVING 关键词

    orderBy

    排序 ORDER BY

    orderAsc

    ASC 排序 ORDER BY

    orderDesc

    DESC 排序 ORDER BY

    exists

    EXISTS 条件语句

    notExists

    NOT EXISTS 条件语句

    between

    BETWEEN 条件语句

    notBetween

    NOT BETWEEN 条件语句

    addFilter

    自由拼接 SQL

    last

    拼接在最后,例如:last(“LIMIT 1”)

    示例(BaseMapper 里面有所有的方法):

    int result = userMapper.insert(userPo);    // 增
    
    QueryWrapper queryWrapper= new QueryWrapper<>();
    queryWrapper.eq("uid", uid);
    int result = userMapper.delete(queryWrapper);    // 删
    
    UpdateWrapper updateWrapper = new UpdateWrapper<>();
    updateWrapper.eq("uid", uid);
    int result = userMapper.update(userPo, updateWrapper);    //改
    
    QueryWrapper queryWrapper= new QueryWrapper<>();
    queryWrapper.eq("uid", uid);
    List list = userMapper.selectList(queryWrapper);    //查
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    Zeppelin
    文心一言 VS 讯飞星火 VS chatgpt (115)-- 算法导论10.2 8题
    it运维监控运维方案主要应用在哪些场景
    8、智慧交通项目(1)
    小啊呜产品读书笔记001:《邱岳的产品手记-06》第13讲 无用却必要:产品规划【上】 & 第14讲 留白与节奏:产品规划【下】
    8/26 网络流Dinic算法+最小割+cf
    超强 | 保险单据在线OCR,秒速识别保单信息
    【gpt实践】比OpenAI 的 GPT-4 更好模型 Claude 3.0
    VSCode运行python提示No module name ‘xxx‘
    win11-qt5.14配置
  • 原文地址:https://blog.csdn.net/m0_54861649/article/details/126112809