1:
IFNULL(1,2) 如果1不是null则返回1,是null则返回2的值
collection = "list" 定义执行时遍历的集合的名字。item="mylist" 定义的是前面传过来的集合参数的名字。separator=","定义的是每个对象循环之后中间添加的符号“,”,open="("定义这个语句以(开始,close=")"以)结束 实际执行sql:delete from t_user where t_user.ID in()
IFNULL(1,2) 如果1不是null则返回1,是null则返回2的值
IF(1,2,3)判断1 ,1不是null则执行返回2,是null则执行返回3,
2:数据库返回值,对于insert语句返回插入的条数 update 返回更新的条数 delete返回删除的条数 add 返回增加的条数
3:case when then 使用
当一个属性有多种取值时很有用 比如一个订单的状态。判断时需要一层一层判断,先判断是否提交,根据提交状态查询付款状态,根据付款状态查询发货状态,根据发货状态查询签收状态....下去。使用case when 来查询很有用SELECT CASE WHEN ( SELECT tco.PAY_FLAG FROM t_customer_order tco WHERE tco.ORDER_ID = #{orderId} ) = 0 THEN '7' ELSE CASE WHEN ( SELECT COUNT(1) FROM t_payment_code tpc WHERE tpc.REFUND_FLAG IN (1, 2, 3, 4) AND tpc.ORDER_ID = #{orderId} ) > 0 THEN '5' ELSE CASE WHEN ( SELECT COUNT(1) FROM t_payment_code tpc WHERE tpc.ORDER_ID = #{orderId} AND tpc.INVAILD_FLAG IN (0) ) > 0 THEN '6' ELSE CASE WHEN ( SELECT tco.COMMENT_FLAG FROM t_customer_order tco WHERE tco.ORDER_ID = #{orderId} ) = 0 THEN '8' ELSE '9' END END END END AS orderStatus
mysql中 获取时间 建议使用now()和sysdate(),不同的是now再执行之前就已经得到,而sysdate再执行时动态获得! musql中 可以获得某天再某一年 某一个星期 某一个月中的位置 dayofyear() dayofweek() dayofmonth() mysql中 获得月份和星期的名字 如september 和 Friday 函数是 weekname() monthname() mysql中 获得一个月中最后的一天 last_day() mysql中 获取两个日期相差年份用于获取年龄YEAR (20150308100725) - YEAR (20130203222625)=2
5:清除表格内容: TRUNCATE tableName 就可以 (删除表格之后,重新复制一个新的表,机构和之前完全一样)
delect tableName(相当于一行一行删除表格内容)
6:计算两个“20160415161525”类型的时间之间相差天数
public static int daysOfTwo(Date beforDate, Date afterDate) {
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(beforDate);
int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
aCalendar.setTime(afterDate);
int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
return day2 - day1;
}
7:mysql符号xml转换
原符号 | < | <= | > | >= | & | ' | " |
替换符号 | < | <= | > | >= | & | ' | " |
8:xml中使用forach循环插删除句
<delete id="deleteKey">
DELETE FROM
t_user
WHERE
t_user.ID
in
<foreach collection="list" index="index" item="mylist" separator="," open="(" close=")">
#{list}
</foreach>
</delete>
collection = "list" 定义执行时遍历的集合的名字。item="mylist" 定义的是前面传过来的集合参数的名字。separator=","定义的是每个对象循环之后中间添加的符号“,”,open="("定义这个语句以(开始,close=")"以)结束 实际执行sql:delete from t_user where t_user.ID in()
foreach的这种语法限制了不能用他执行批量的的update操作
数据库自定义函数、存储过程、触发器的区别
函数,就是我们数学里面的函数,你有几个输入,几个输出,你可以自己设计一些算法或者组织一些计算顺序什么的得到你想要的结果,但是里面不能含有PLSQL语句
存储过程,你自己定义输入输出,可以在里面加入SQL语句。
触发器,触发器定在没涨表上,当表的数据发生变化时触发,里面可以有SQL语句