①思路
1.获取当前时间年月日 如:2018-01-15 00:00:00 2018-01-15 24:00:00 2.查询表中对应日期字段是否在当天时间段内 3.若是在,则从0开始递增 4.若是不在,则查找msgno最大数值,在此基础上+1
②上代码
Controller调service中封装的方法
Integer msgid= xxtzService.getMsgid();
service
public Integer getMsgid(){ //1.获取当前时间,格式为年月日时分秒 String date = DateU.getDateToString(new Date().getTime()); String senddate1 = date+" 00:00:00"; String senddate2 = date+" 24:00:00"; //2.查询表中对应字段是否有当天时间的 List<Message> msgList = xxtzMapper.findTime(senddate1,senddate2); if(msgList.size()==0 || msgList==null){ //3.1若是没有匹配,从1开始递增 Integer msgid=0; //每日最多10万条 for (int i = 0; i < 100000; i++) { msgid++; return msgid; } }else{ //3.2若是匹配,则查找msgno的最大数值,在此基础上+1 Integer msgid = xxtzMapper.findMaxMsgid(senddate1,senddate2); msgid++; return msgid; } return null; }
Mapper
List<Message> findTime(@Param("senddate1")String senddate1, @Param("senddate2")String senddate2); Integer findMaxMsgid(@Param("senddate1")String senddate1, @Param("senddate2")String senddate2);
xxMapper.xml
<select id="findMaxMsgid" resultType="int"> select max(msgid) from Message where senddate between #{senddate1} and #{senddate2} </select> <!-- 查询Message表中对应字段是否有当天时间的 --> <select id="findTime" resultType="Message"> select * from Message where senddate between #{senddate1} and #{senddate2} </select>