mybatis一个字段传2个值及日期yyyy-mm-dd比较

Posted caihouzi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis一个字段传2个值及日期yyyy-mm-dd比较相关的知识,希望对你有一定的参考价值。

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

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

 

以上是关于mybatis一个字段传2个值及日期yyyy-mm-dd比较的主要内容,如果未能解决你的问题,请参考以下文章

mybatis想给其中某个字段赋成null,mapper层怎么判断这个传进来的null是 需要赋空值还是需要略过不更新

hive怎么把日期转化成yyyy-mm格式?

Vue组件传值及页面缓存问题

Extjs 4.2 日期字段只显示年和月没有日期

vue通过路由传值及在页面刷新后如何保存值

从日期时间列中提取 YYYY-MM