idea---mybits使用criteria 进行1、or查询以及相等 2、模糊查询 3、时间在某个时间段内 并举例说明如何使用

多条件Or查询
进行select * from A where (xx=a and xx=b) or (xx=c and xx=d)的查询操作

xx可以为A表中的任意属性,前面括号里的xx可以和后面括号的相同也可以不同

具体写法如下:

OrderEntityExample example=new OrderEntityExample();
OrderEntityExample.Criteria criteria = example.createCriteria();
criteria.andCreatEqualTo(userid);
criteria.andIdEqualTo(id);
OrderEntityExample.Criteria criteria2 = example.createCriteria();
criteria2.andNoEqualTo(no);
criteria2.andStatusEqualTo(status);
example.or(criteria2);//这个是重点
List<Entity> sysProducts = entityMapper.selectByExample(example);

执行的sql是

select* from order where (id =id and creat =creat)or(no=no and status=status)

在使用selectByExample时,可以设置查询条件的
1、相等
2、模糊查询
3、时间在某个时间段内
下面举例说明如何使用:

public List<SysHospitalizationDTO> getPageList(SysHospitalizationQuery sysHospitalizationQuery, String sort, String sortOrder) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(getDateFormat());
        Date todayDate = getTodayDate();
        List<SysHospitalization> list = sysHospitalizationDao.selectByExample(getExample(sysHospitalizationQuery)).stream().collect(Collectors.toList());
        }
private Example getExample(SysHospitalizationQuery sysHospitalizationQuery) {
        Example example = new Example(SysHospitalization.class);
        Example.Criteria criteria = example.createCriteria();
        //模糊查询
        if (sysHospitalizationQuery.getpName() != "") {
            criteria.andLike("pName", "%" + sysHospitalizationQuery.getpName() + "%");
        }
        //相等查询
        if (sysHospitalizationQuery.gethId() != "") {
            criteria.andEqualTo("hId", sysHospitalizationQuery.gethId());
        }
        if (sysHospitalizationQuery.gethArea() != 0) {
            criteria.andEqualTo("hArea", sysHospitalizationQuery.gethArea());
            ;
        }
        //筛选时间--在某个时间段内
        if (sysHospitalizationQuery.gethDate() != "") {
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            Date dateBegin = null;
            Date dateEnd=null;
            try {
                dateBegin = sdf.parse(sysHospitalizationQuery.gethDate());
                dateEnd = sdf.parse(sysHospitalizationQuery.gethDate());
            } catch (ParseException e) {
                e.printStackTrace();
            }
            Calendar cal = Calendar.getInstance();
            cal.setTime(dateEnd);
            cal.add(Calendar.DATE, 1);
            criteria.andBetween("hDate",dateBegin,new Date());
        }
        return example;
    }
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用 Mybatis-Plus 的 QueryWrapper 来实现这个功能。 假设你有一个实体类 `User`,其中有一个字段 `create_time` 表示用户创建时间,你想查询出某个时间段之内的用户记录,可以按照以下步骤操作: 1. 创建 QueryWrapper 对象: ```java QueryWrapper<User> queryWrapper = new QueryWrapper<>(); ``` 2. 在 QueryWrapper 中设置查询条件,使用 `ge` 和 `le` 方法来表示时间段的起始和结束: ```java queryWrapper.ge("create_time", startTime) .le("create_time", endTime); ``` 其中,`startTime` 和 `endTime` 是时间段的起始和结束时间,可以使用 `java.util.Date` 或 `java.time.LocalDateTime` 类型来表示。 3. 执行查询操作: ```java List<User> userList = userMapper.selectList(queryWrapper); ``` 以上代码会查询出符合条件的用户记录,并返回一个 `List<User>` 对象。 完整的代码示例如下: ```java import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; @Service public class UserService { @Autowired private UserMapper userMapper; public List<User> findUsersByCreateTime(LocalDateTime startTime, LocalDateTime endTime) { QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.ge("create_time", startTime) .le("create_time", endTime); return userMapper.selectList(queryWrapper); } } ``` 注意,以上代码仅供参考,具体实现方式可能因为 Mybatis-Plus 版本的不同而有所差异,建议参考官方文档和 API 手册。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值