Mybatis总结一——日期比较,参数传递,Mapper文件的编写

  1 参数传递

        (1)如果不想把参数放在一个对象内封装,使用多个参数

           Dao接口层方法传参:

               Integer selectAnnualSales(@Param("tenantId")String tenantId,@Param("beginDate") String beginDate,@Param("endDate")String endDate,@Param("shopCode")String shopCode,@Param("type")Integer type);

           对应的Mapper.xml文件代码

  <select id="selectAnnualSales" resultType="java.lang.Integer">
        select sum(payment) from t_third_common_consumption
        <where>
            and date(create_time) BETWEEN date(#{beginDate}) and date(#{endDate})
            and shop_code=#{shopCode}
            and tenant_id=#{tenantId}
            <choose>
                <when test="type!=null">
                    and type = #{type} and payment >= 0
                </when>
                <otherwise>
                    and ( type = 0 or type = 1 )
                </otherwise>
            </choose>
        </where>
    </select>

        (1) 其中,注解@Param作用使得mapper中可以直接用#{参数名}取值,如果dao层方法没有该注解,则mapper层不能用#{参数名}取值,只能用0 ,1 等索引下标对应方法中传来的参数,如#{0}。

        (2)<where>元素会自动根据条件的语句数,删除无用的and。如本例会自动删除第一个and,之后的and会保留。

      (3)<choose> 

                   <when></when>

                  <otherwise></otherwise>

              </choose> 

              相当与if/else。

      (4)<select> 元素的属性 id 要和dao层方法名一致,且唯一。

2:日期使用

       数据库中的日期格式为:yyyy-MM-dd,字段类型为date

       后台传递的参数也应该符合该格式(非类型)

       例如:    Date  date=new Date();

                     SimpleDateFormat  format=new SimpleDateFormat ("yyyy-MM-dd");

                    String  sDate=format.format(date);      //将date转换为该格式的字符串

        在mapper文件的sql语句中,比较日期的大小,要将字符串转换为date(数据库字段对应的类型,格式)类型,用date()函数。

       例如 :select * from table1 where date(create_time)  between date(sDate) and date(endDate);

                   date()会将该字符串转换为该字符串格式的日期类型。注意如果传入的日期为:yyyy-MM-dd HH:mm:ss .使用date()后会自动变成 yyyy-MM-dd . 如 2019-02-01 23:32:32  会变成 2019-02-01 

                     

              

          

MyBatis 中进行日期范围查询时,可以使用两个参数来表示日期范围,分别是开始时间和结束时间。通常情况下,这两个参数都是使用 Java 的 Date 类型来表示的。 例如,假设我们要查询在指定时间范围内的订单记录,可以使用如下的 SQL 语句: ```sql SELECT * FROM orders WHERE order_time BETWEEN #{startTime} AND #{endTime} ``` 在这个 SQL 语句中,#{startTime} 和 #{endTime} 分别表示开始时间和结束时间的参数。 在 MyBatisMapper.xml 文件中,我们可以定义对应的方法来调用这个 SQL 语句: ```xml <select id="getOrdersByTimeRange" resultType="Order"> SELECT * FROM orders WHERE order_time BETWEEN #{startTime} AND #{endTime} </select> ``` 在 Java 代码中,我们可以将开始时间和结束时间作为参数传递给这个方法: ```java Date startTime = new Date(2021, 1, 1); Date endTime = new Date(2021, 12, 31); List<Order> orders = mapper.getOrdersByTimeRange(startTime, endTime); ``` 在这个例子中,我们查询了 2021 年的订单记录。需要注意的是,这里的日期范围是包含开始时间和结束时间的,即查询结果中会包含开始时间和结束时间的订单记录。如果需要查询不包含开始时间和结束时间的订单记录,可以使用下面的 SQL 语句: ```sql SELECT * FROM orders WHERE order_time > #{startTime} AND order_time < #{endTime} ``` 或者使用下面的 SQL 语句: ```sql SELECT * FROM orders WHERE order_time >= #{startTime} AND order_time <= #{endTime} ``` 具体使用哪种 SQL 语句,可以根据实际需求来决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值