Mybatis开发总结

2018-12-10  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读