最近刚换工作,今天在工作中遇到了2个问题,如标题所述(mybatis框架)。前一个是直接百度copy过来的。再将代码复制一下:
service层:
List<String> years = new ArrayList(); years.add(currentYear); years.add(lastYear); List<XXXEntity> XXXList = XXXDAO.selectTime(type,years);
dao层:
public List<XXXEntity> selectTime( @Param("type") Long type,List<String> yearsList);
mapper:
<select id="selectTime" parameterType="java.util.List" resultMap="entity"> select * from table where type = 1 and year in <foreach item="item" collection="yearsList" separator="," open="(" close=")" index=""> #{item, jdbcType=VARCHAR} <!--我list里放的是String类型的值,所以jdbcType=VARCHAR,注意collection的值与dao层参数list对象名保持一致。> </foreach> </select>
好了,这就是一个字段传2个值的方法,用list封装后,xml文件里复制过去注意的地方改一下就好了。
第二个问题:我要拿到一个时间去判断它是否在一个时间段内。时间和时间段取值为yyyy-mm-dd,判断精确到日,不要时分秒,网上查了一些资料,自己试了改改了试终于实现了,代码如下:
public Boolean isEffectiveDate(Date currentTime, Date startTime, Date endTime) { SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); String current=sd.format(currentTime); String start=sd.format(startTime); String end=sd.format(endTime); if(java.sql.Date.valueOf(current).after(java.sql.Date.valueOf(start)) & java.sql.Date.valueOf(current).before(java.sql.Date.valueOf(end))){ return true; }else{ return false; } }
看着没几行,弄了很长时间,Date类型真心不熟悉,这段代码反复修改、调试、优化,可以直接copy过去用(注意Date值的格式都是yyyy-mm-dd)。
是自己工作经验的一个总结,同时也是希望贡献自己的一份力,能帮助到更多人。感谢。