最近刚换工作,今天在工作中遇到了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)。

是自己工作经验的一个总结,同时也是希望贡献自己的一份力,能帮助到更多人。感谢。