博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis-动态SQL
阅读量:5958 次
发布时间:2019-06-19

本文共 4647 字,大约阅读时间需要 15 分钟。

一、动态SQL主要使用以下标签:

1、if判断

2、choose(when otherwise):

  分支选择;带了break的swtich-case

  如果带了id就用id查,如果带了lastName就用lastName查;只会进入其中一个。

3、trim 字符串截取(where(封装查询条件), set(封装修改条件))

4、foreach 遍历集合

二、案列

1、<where if结合>

  说明:如果where 后面紧跟着and,<where>标签会自动去掉紧跟在后面的第一个and。

2、

3、

 

4、

update tbl_employee
last_name=#{lastName},
email=#{email},
gender=#{gender}
where id=#{id}

 

5、

 

6、

employee_id,last_name,email
last_name,email,gender,d_id
insert into tbl_employee(
) values
(#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id})

 

7、

insert into tbl_employee(last_name,email,gender,d_id) values(#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id})

 

  说明:separator:分隔符。foreach中间的语句使用“;”分隔。

8、Oracle数据库批量保存:

  Oracle不支持values(),(),()

  Oracle支持的批量方式

    1、多个insert放在begin - end里面
      begin
      insert into employees(employee_id,last_name,email)
      values(employees_seq.nextval,'test_001','test_001@atguigu.com');
      insert into employees(employee_id,last_name,email)
      values(employees_seq.nextval,'test_002','test_002@atguigu.com');
      end;
    2、利用中间表:
     insert into employees(employee_id,last_name,email)
     select employees_seq.nextval,lastName,email from(
     select 'test_a_01' lastName,'test_a_e01' email from dual
     union
     select 'test_a_02' lastName,'test_a_e02' email from dual
     union
       select 'test_a_03' lastName,'test_a_e03' email from dual
     )

insert into employees(
)
select #{emp.lastName} lastName,#{emp.email} email from dual

 

9、Mybatis两个内置参数

  _parameter:代表整个参数

  单个参数:_parameter就是这个参数

    多个参数:参数会被封装为一个map;_parameter就是代表这个map

  _databaseId:如果配置了databaseIdProvider标签。

  _databaseId就是代表当前数据库的别名oracle

  

  bind:可以将OGNL表达式的值绑定到一个变量中,方便后来引用这个变量的值 10、抽取可重用的sql片段。方便后面引用

    1、sql抽取:经常将要查询的列名,或者插入用的列名抽取出来方便引用

    2、include来引用已经抽取的sql:
    3、include还可以自定义一些property,sql标签内部就能使用自定义的属性
      include-property:取值的正确方式${prop},
      #{不能使用这种方式}

  

employee_id,last_name,email
last_name,email,gender,d_id

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

转载于:https://www.cnblogs.com/zhaobingqing/p/7097863.html

你可能感兴趣的文章
通过jQuery.support看javascript中的兼容性问题
查看>>
NYOJ-取石子
查看>>
AngularJS
查看>>
《zw版·Halcon-delphi系列原创教程》halconxlib控件列表
查看>>
List与数组的相互转换
查看>>
Computer Science Theory for the Information Age-4: 一些机器学习算法的简介
查看>>
socketserver模块使用方法
查看>>
json模块
查看>>
各型号英特尔CUP的功率
查看>>
scanf()中的%c 不能正常输入的问题
查看>>
encodeURIcomponent编码和ASP.NET之间编码转换
查看>>
实验三 区域四连通填充算法
查看>>
关闭selinux服务
查看>>
centos中安装、升级git
查看>>
单元测试基本路径覆盖法(转)
查看>>
十三、栅栏CyclicBarrier
查看>>
简单搭配(Collocation)隐私声明
查看>>
2013编程之美资格赛【传话游戏】
查看>>
关于Dictionary的线程安全问题
查看>>
在python中单线程,多线程,多进程对CPU的利用率实测以及GIL原理分析
查看>>