zoukankan      html  css  js  c++  java
  • mybatis动态sql语句

    if和where

    使用动态sql语句:

    where内可以有多个if语句,也可以使用choose标签来表示:

    两种方法效果相同,都表示条件选择。

    set语句:

     注意如果set中的条件一个都不成里的话,会报错。

    where 可以使用trim条件替代:

     <trim prefix="where" prefixOverrides="and |or">
                    ...
                </trim>
    prefifixOverrides 属性会忽略通过管道分隔的文本序列(注意此例中的空格也是必要的)。它的作用是移除所有指定在
    prefifixOverrides 属性中的内容,并且插入 prefifix 属性中指定的内容。

    set也可以使用trim替换,

    foreach语句:

    应用场景:查询、批量数据操作(录入,删除,修改);

    简介:foreach元素的属性主要有 item,index,collection,open,separator,close。

    item表示集合中每一个元素进行迭代时的别名,

    index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,

    open表示该语句以什么开始,

    separator表示在每次进行迭代之间以什么符号作为分隔 符,

    close表示以什么结束。

    foreach的时候最关键的也是最容易出错的就是collection属性

    1. 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list

    2. 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array

    3. 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,也可以传递单参数。item代表value,index代表key;

     

     批量录入:

    批量更新:

    方案一:模拟mysql中批量处理sql语句

    注意要在mysql连接的url后添加批处理语句,不然会报错:

    allowMultiQueries=true,表示允许批量操作
    测试方法:
    方案二:利用case语句
    update emp set ename=case empno
              when 1 then 'name1'
              when 2 then 'name2'
              when 3 then 'name3'
            end,sal=case empno
              when 1 then 'sal1'
              when 2 then 'sal2'
              when 3 then 'sal3'
            end where empno in (1,2,3)

    mapper映射:

    批量删除

    与插入语法类似

     delete from emp where empno in(1,2,3)

    #{}与${}的区别

     相同点:都可以作为参数在sql语句中使用

    不同点:

    #{} 会对传入的数据进行转码处理,在预编译的时候当作?处理;避免sql注入查询命令如下:
    select * from emp WHERE ename =?
    ---------------------------------------------------------------
    ${} 将数据以字符串的形式原封不动的传入sql命令中,一般在用到列名,表名的时候使用; 查询命令如下:
    select * from emp WHERE ename =zhangsan(错误)(需要加上引号)

     模糊查询

    四种方法,人选一个即可

  • 相关阅读:
    linux引导系统
    Android开发面试经——2.常见Android基础笔试题
    Android开发面试经——1.常见人事面试问题
    Android面试题整理【转载】
    android设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题解决
    Android软键盘弹出时把布局顶上去的解决方法
    Android入门:绑定本地服务
    Android aidl Binder框架浅析
    Android LayoutInflater深度解析 给你带来全新的认识
    Android RecyclerView 使用完全解析 体验艺术般的控件
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/10990693.html
Copyright © 2011-2022 走看看