mybatis_动态SQL

本文介绍了MyBatis中的动态SQL,包括if、where、choose、foreach、set等标签的使用方法,以及动态SQL在实际场景中的应用,如批量删除和修改。通过这些标签,可以灵活地构建和调整SQL语句,避免硬编码,提高代码的可维护性。
摘要由CSDN通过智能技术生成

动态sql是指sql语句可动态的变化

/**
 * 通过条件查询员工信息【条件不确定】
         private Integer id;         //员工id
         private String lastName;    //员工姓名
         private String email;       //员工邮箱
         private Double salary;      //员工薪资
    Employee对象中属性不为空,就添加到查询条件中
 id not null->sql:          select id,last_name,email,salary from tbl_employee where id=#{id}
 lastName not null -> sql   select id,last_name,email,salary from tbl_employee where last_name=#{lastName}
 */
public List<Employee> selectEmpByDynamicOpr(Employee employee);

myabtis不支持方法的重载

  • 因为:Mybatis规定方法名与SQL的Id一致【SQL的Id不能重复】导致了方法不能重载

  • Mybatis映射文件中注释

    • 推荐使用:<!-- -->

    • 不推荐使用:--

  • 动态数据:使用Thymeleaf动态渲染html【静态页面】

  • Mybatis动态SQL中支持:OGNL

    • OGNL( Object Graph Navigation Language )对象图导航语言,这是一种强大的

      表达式语言,通过它可以非常方便的来操作对象属性。 类似于我们的EL,SpEL等

  动态sql标签

  • if标签:主要用于基本的if判断
  • where标签 :解决where关键字以及出现的第一个and或者or关键字导致sql语句错误
  • trim标签:可以在条件判断完的SQL语句前后添加或者去掉指定的字符

    • prefix: 添加前缀

    • prefixOverrides: 去掉前缀

    • suffix: 添加后缀

    • suffixOverrides: 去掉后缀

  • choose标签:主要用于分支判断 单条件 类似于java中的if-else 或者 Switch-case 只会满足所有分支中的一个
  • set标签:去除修改语句中的{,}逗号的问题
  • foreach标签:类似于java中的增强for循环
    • collection: 要迭代的集合
    • item: 当前从集合中迭代出的元素
    • open: 开始字符
    • index

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值