zoukankan      html  css  js  c++  java
  • 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)。

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

  • 相关阅读:
    Java volatile 关键字底层实现原理解析
    volatile关键字?MESI协议?指令重排?内存屏障?这都是啥玩意
    聊聊缓存一致性协议
    JIT原理
    java 泛型详解
    Java中的逆变与协变
    疯狂的String
    java中synchronized与Lock的异同
    不使用的大对象为什么要手动设置null,真的有效吗?
    不使用反射如何调用某个实例对象的方法
  • 原文地址:https://www.cnblogs.com/caihouzi/p/11689441.html
Copyright © 2011-2022 走看看