二零一八年8月 mybatis+ 动态sql连续日期

2018-01-111 、   怎样在品种中急忙搜索对应的mapper.xml文件 


  • 从Controller出手,使用(Ctrl+鼠标左键)找到瑟维斯(Service)(Service)调用的不二法门,再找到底层方法,就能找到相应mapper.或者。还有一个相比较偷懒的方法,即使@RequestMapping/@GetMapping/@PostMapping等声明的法子名与bean的id一样,可以拔取IDEA中Ctrl+h举行项目内搜索,这多少个法子不指出,被长辈批评过。


  • 2、.xml文件中万分规字符>、<、>=、<=、”、‘会报错。

  • 贴一个技术文档: 
    指出平时翻看   http://www.w3school.com.cn    

解决:

(1)、使用转移字符:

<       可以利用  & lt ;    举办替换

例如:

<age> age < 30 </age> 
  下面这种写法会报错,应当这么写: 
  <age> age    & lt ; 
   30 </age> 

图片 1

(2)、使用CDATA区:以”<![CDATA[ “开始,以” ]]>
截止,在两者之间嵌入不想被解析程序解析的原本数据,解析器不对CDATA区中的内容开展辨析。

例如:

rownum <=1      能够利用     rownum<![CDATA[<=1 ]]> 
 (1可以置身外边)       举办轮换

 

细致详解链接:

https://www.cnblogs.com/o-andy-o/p/3586159.html

http://blog.csdn.net/jihuanliang/article/details/7980844

http://blog.csdn.net/qq\_28587263/article/details/54138998

 


 

3、在项目中大家会遇见遵照时间去追寻记录,有时候一年中只有独家多少个月有数量的图景,而咱们又希望见到连续的年、月、日可以行使以下办法。

将团结询问的select SQL与以下查询合并(使用union
all的进度要比union快):

Oracle中常用的函数:

  TO_CHAR 是把日子或数字转换为字符串;

  TO_DATE 是把字符串转换为数据库中得日期类型转换函数;

  TO_NUMBER 将字符转化为数字;

(1)、年份

    select ‘2016’+rownum-1 as A(用各自名)

      from dual

    connect by rownum <=   (2018 – 2016)+1 ;

    一般日期是往日台传过来可以接纳:

    select  #{begintime} + rownum-1 as A(用各自名)

      from dual

    connect by rownum <=   ( #{endtime} – #{begintime})+1 ;

    其中:SELECT ROWNUM FROM DUAL CONNECT BY ROWNUM <= N
能够生成1到N的整数系列,N是想要生成的行列的个数,可以是整数,也得以是询问得出的整  数,例如:

  SELECT ROWNUM FROM DUAL CONNECT BY ROWNUM <=
7(rownum:1,2,3,4,5,6,7)

  参考:rownnum 范围参考     
http://blog.sina.com.cn/s/blog\_a26966d90102wwkb.html

(2)、月份

  SELECT TO_CHAR(ADD_MONTHS(TO_DATE(‘201710’, ‘yyyyMM’), ROWNUM –
1),  ‘yyyyMM’) as A

    FROM DUAL

  CONNECT BY ROWNUM <= months_between(to_date(‘201806’,
‘yyyyMM’), to_date(‘201710’, ‘yyyyMM’)) + 1;

(3)、日

  显示8位:

  SELECT TO_CHAR(TO_DATE(‘20141001’, ‘yyyyMMdd’) + ROWNUM – 1,
‘yyyyMMdd’) as A

     FROM DUAL

  CONNECT BY ROWNUM <= runc(to_date(‘20150601’, ‘yyyyMMdd’) 
– to_date(‘20141001’, ‘yyyyMMdd’)) + 1;

(只截取日)突显2位:

 (表1暗含tjr字段,该字段唯有两位的日期)

  select tjr from 表1
union all

  SELECT tjr from (select TO_CHAR( TRUNC( to_date(‘20160701’,
‘yyyyMMdd’ ), ‘MM’ ) + ROWNUM – 1, ‘yyyyMMdd’ ) AS tjr

  FROM DUAL CONNECT BY

  ROWNUM <=TO_NUMBER(TO_CHAR( LAST_DAY( TO_DATE(‘201607’,
‘yyyyMM’ )), ‘dd’ )))

(4)、小时

  SELECT to_date(‘2013-07-01 12’, ‘yyyy-mm-dd hh24’) + (ROWNUM – 1) /
24 sdate

   FROM dual
  CONNECT BY ROWNUM <= (to_date(‘2013-07-02 22’, ‘yyyy-mm-dd
hh24’) – to_date(‘2013-07-01 12’, ‘yyyy-mm-dd hh24’)) * 24 + 1

 

参考:

https://www.2cto.com/database/201506/404733.html

http://blog.csdn.net/itx2000/article/details/56846121

http://blog.csdn.net/ld422586546/article/details/9626921/

 


 

相关文章