美文网首页
Mybatis开发总结

Mybatis开发总结

作者: 给我张床我能睡到世界灭亡 | 来源:发表于2018-12-10 16:01 被阅读3次

    Mybatis批量操作

    -- 批量插入
    insert into TABLE(a,b,c) values
    <foreach collection="list" item="item" separator=",">
    (#{item.a}, #{item.b}, #{item.c})
    </foreach>
    
     -- 批量删除
     delete from TABLE where a = #{a} and b = #{b} and c in
    <foreach collection="list" item="item" separator="," open="(" close=")">
    #{item}
    </foreach>
    

    Mybatis大于小于号使用

    1. mybatis在xml中不能直接使用> <等符号,需要用> <替换
    2. mybatis在java类中的sql语句,在<script>中不能直接使用> <等符号,需要用> <替换;不在<script>中的SQL语句可以直接使用> <符号

    Mybatis使用like

    1. 可以直接把入参拼接成%参数%的形式。例如:param = "test";则转化成param = "%test%"; 然后在sql中直接使用#{param}
    2. 可以把%写入sql语句,但是此时不能使用#,需要使用$;例如:param = "test"; sql语句应该是 like '%${param}%'。如果此时使用'%#{param}%'会提示错误参数个数不对应。

    LIMIT后面不能跟表达式

    形如:limit m,n 其中m和n不能是表达式形式。
    题目来源:第N高的薪水
    错误代码:错误代码:错误代码:

    CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
    BEGIN
      RETURN (
          -- Write your MySQL query statement below.
          select IFNULL((select distinct(salary) from Employee order by salary desc limit N-1,1),null) as getNthHighestSalary
      );
    END
    

    上面代码之所以是错误,是因为在limit存在 N-1表达式所以错误,此时应该在sql之前重新定义变量。
    正确代码:

    CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
    BEGIN
      -- 此处也可以声明新变量:Declare M INT; SET M = N - 1
      SET N = N-1;
      RETURN (
          -- Write your MySQL query statement below.
          select IFNULL((select distinct(salary) from Employee order by salary desc limit N,1),null) as getNthHighestSalary
      );
    END
    

    相关文章

      网友评论

          本文标题:Mybatis开发总结

          本文链接:https://www.haomeiwen.com/subject/dqfdhqtx.html