java mybatis查询,执行时间过长

6 篇文章 0 订阅

遇到问题的情况

mybatis查看返回的时间是1秒到1.2秒之间

把日志中打印的sql复制到sqlyog中执行在0.1秒以内,多次执行也没有超过0.1秒的

程序上sql执行两边,一遍查数量,一遍差数据,那这么算还有0.8秒不知道去哪了

因为有分页数据量来说不大

从网上找到的提高效率有

#{XXX}变成${XXX}

<select>中添加fetchSize

都没有影响到返回速度sudu

其余的查询执行返回的时间是正常的,sql查询的内容差不多,只不过主表不同,从表相同,变慢的情况唯一较大的差别就是数据天数是十多万条,其他表数据一万到几千不等

把十多万条数据删除只剩一两万条,mybatis查询的速度和其余查询的速度有差不多了,

暂时没找到原因,在此记录下


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我推荐使用MyBatis-Plus的LocalDateTimeTypeHandler来处理日期和时间,它可以轻松地将LocalDateTime类型的数据存储到MySQL数据库,而且可以轻松地通过MyBatis-Plus的API获取上月的时间。 ### 回答2: 使用Mybatis-Plus查询上个月的时间可以按照以下步骤进行操作: 步骤1:首先,获取当前时间,并利用Java提供的Calendar类进行日期计算。可以使用以下代码获取当前时间并计算上个月的时间: ```java import java.util.Calendar; import java.util.Date; public class Main { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.add(Calendar.MONTH, -1); Date lastMonth = calendar.getTime(); System.out.println(lastMonth); } } ``` 步骤2:接下来,根据上个月的时间作为查询条件进行数据库查询。使用Mybatis-Plus进行查询时,可以通过Wrapper对象定义查询条件。具体的代码如下: ```java import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ... Date lastMonth = ...; // 上个月的时间 QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.ge("create_time", lastMonth); // 查询大于等于上个月的时间 List<User> userList = userMapper.selectList(queryWrapper); ``` 这里的例子假设我们使用Mybatis-Plus框架进行用户表(User)的查询,create_time字段表示记录创建的时间。根据查询条件`create_time >= 上个月时间`,使用`selectList()`方法进行查询,并将结果保存在userList列表中。 请注意,具体的代码细节可能会因为数据库表以及实体类的定义而有所不同,请根据实际情况进行相应的调整。以上就是使用Mybatis-Plus查询上个月时间的方法。 ### 回答3: 在使用Mybatis-Plus查询上个月的时间,我们可以借助Java的日期时间类来完成。首先,我们需要获取当前日期的上个月时间,可以使用Java 8的日期时间API的`LocalDate`类来进行操作。下面是一个示例代码: ```java // 获取当前日期 LocalDate currentDate = LocalDate.now(); // 获取上个月的时间 LocalDate lastMonth = currentDate.minusMonths(1); // 获取上个月的起始时间和结束时间 LocalDate firstDayOfMonth = lastMonth.withDayOfMonth(1); // 上个月的第一天 LocalDate lastDayOfMonth = lastMonth.withDayOfMonth(lastMonth.lengthOfMonth()); // 上个月的最后一天 // 转换为需要的格式,如字符串、日期对象等 String firstDayOfMonthStr = firstDayOfMonth.toString(); String lastDayOfMonthStr = lastDayOfMonth.toString(); ``` 上述代码中,我们首先获取当前日期`LocalDate.now()`,然后通过`minusMonths(1)`方法减去一个月得到上个月的日期。接着,通过`withDayOfMonth(1)`方法获取上个月的第一天,`withDayOfMonth(lastMonth.lengthOfMonth())`方法获取上个月的最后一天。最后,根据需要将日期转换为字符串或日期对象即可。 在Mybatis-Plus中,可以使用`QueryWrapper`或`LambdaQueryWrapper`类组装查询条件,调用相应的查询方法查询数据库中符合条件的数据。结合上述获取的上个月时间,可以编写类似如下的代码: ```java QueryWrapper<Entity> queryWrapper = new QueryWrapper<>(); queryWrapper.between("create_time", firstDayOfMonth, lastDayOfMonth); List<Entity> resultList = entityMapper.selectList(queryWrapper); ``` 以上代码中,`QueryWrapper`对象`queryWrapper`用于设置查询条件,通过`between`方法指定`create_time`字段在上个月的范围内。最后,调用`selectList`方法执行查询,将符合条件的数据存入`resultList`中。 需要注意的是,以上代码只是示例,需要根据具体的数据表和实体进行相应的调整。同时,Mybatis-Plus还提供了更多强大的查询方法,可以根据具体需求选择合适的方法来完成查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值