java控制某个字段当天递增

①思路

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>

  

  

  

原文地址:https://www.cnblogs.com/ccEmma/p/8289322.html