• Mybatis学习笔记9 动态SQL


    Mybatis学习笔记8 查询返回专题_biubiubiu0706的博客-CSDN博客

    动态SQL的业务场景:

    例如

    批量删除

    get请求 uri?id=18&id=19&id=20  或者post  id=18&id=19&id=20

    String[] ids=request.getParameterValues("id")

    那么这句SQL是需要动态的

    还有像如下的多条件查询

    可能不提供条件:  0条件  select & from t_product;

    当选择了一个或多个条件: select * from t_product where 条件1=#{xxx}  and 条件2=#{xxx2} 

    新建模块

    1.     if标签

    2.where标签 作用让where子句更加动态智能

    当所有条件都为空时,where标签保证不会生成where子句

    自动去除某些条件前面多余的and和or

    3.trim标签

    prefix:在trim标签中的语句前添加内容

    suffix:在trim标签中的语句后 添加 内容

    prefixOverrides:前缀覆盖掉(去掉)

    suffixOverrides:后缀 覆盖掉(去掉)
    trim会自动判断里面if来考虑是否添加where    并且自动判断是否去掉 and或者or
    4.set标签
    主要使⽤在update语句当中,⽤来⽣成set关键字,同时去掉最后多余的“,”
    5.choose when otherwise
    < choose >
    < when > when >
    < when > when >
    < when > when >
    < otherwise > otherwise >
    choose >
    一般会和联合使用
    等价于
    if (){
    } else if (){
    } else if (){
    } else if (){
    } else {
    }
    只有⼀个分⽀会被选择!!!!  只要一个分支执行,条件语句结束     只有⼀个分⽀会被选择,且必会选择!!!!只有⼀个分⽀会被选择,且必会选择!!!!只有⼀个分⽀会被选择,且必会选择!!!!只有⼀个分⽀会被选择,且必会选择!!!!只有⼀个分⽀会被选择,且必会选择!!!!只有⼀个分⽀会被选择,且必会选择!!!!
    比如说下面的三个参数都是""或者 null
    那么  最后执行
    select * from t_car where car_type=  ""  或者 select * from t_car where car_type= null

    实际使用比如
    比如需求是:先根据品牌查,没有提供品牌按价格查,没有提供价格按类型查
    这里注意下
    6.foreach标签  
    循环数组或集合,动态⽣成sql
    批量删除:
    id=1&id=2&id=3
    String[] ids=request.getParameterValues("id");
    String[] ids={"1","2","3"}
    int[] intArray = new int[idValues.length];
    for (int i = 0; i < idValues.length; i++) {
            try {
                    intArray[i] = Integer.parseInt(idValues[i]);
            } catch (NumberFormatException e) {
    }
    delete from t_car where id in ( 1 , 2 , 3 );
    delete from t_car where id = 1 or id = 2 or id = 3 ;
    第一种方式: delete from t_car where id in ( 1 , 2 , 3 );
    第二种方式: delete from t_car where id = 1 or id = 2 or id = 3 ;
    批量插入
    比如  一次插入多条数据
    insert into user(id,name,age) values(1,'zs',18),(2,'ls',19),(3,'ww',21)
    7 sql标签与include标签
    sql标签⽤来声明sql⽚段
    include标签⽤来将声明的sql⽚段包含到某个sql语句当中
    作⽤:代码复⽤。易维护。
    例如
  • 相关阅读:
    【保姆级·创建对象】如何通过factory-method创建对象
    分享十万级TPS的IM即时通讯综合消息系统的架构
    七天.NET 8操作SQLite入门到实战 - (2)第七天Blazor班级管理页面编写和接口对接
    Java多线程
    【计算机网络】网络原理
    switch语句深讲
    手写数字识别--神经网络实验
    Java 基础 进程与线程
    .NET周刊【12月第2期 2023-12-13】
    GCC 生成动态库
  • 原文地址:https://blog.csdn.net/tiantiantbtb/article/details/133016968