用QueryWrapper写一个判断空值的模糊查询
时间: 2023-07-28 21:38:36 浏览: 72
好的,你可以参考以下代码:
```java
QueryWrapper<Entity> wrapper = new QueryWrapper<>();
wrapper.like(StringUtils.isNotBlank(keyword), "name", keyword);
```
其中,`Entity`是你要查询的实体类,`name`是你要模糊查询的字段名,`keyword`是你要查询的关键字。`StringUtils.isNotBlank()`是Apache Commons Lang库提供的工具类,用于判断字符串是否为空或null。如果`keyword`不为空,就执行模糊查询,否则不执行查询。
相关问题
querywrapper.between怎样判断空值
在使用`querywrapper.between`方法时,可以通过以下方式判断空值:
```
from sqlalchemy import or_
query = session.query(MyModel).filter(
or_(
MyModel.my_column.between(start, end),
MyModel.my_column.is_(None)
)
)
```
上述代码中,使用了`or_`来链接两个条件,一个是`between`,另一个是判断`my_column`是否为`None`。如果`my_column`为`None`,则返回`False`,否则返回`True`。这种方式可以避免`between`方法在出现空值时的异常。
querywrapper排除空值查询
你可以使用querywrapper的is_not_null方法来排除空值查询。下面是一个示例:
```python
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql.expression import and_, or_
from sqlalchemy.orm.query import Query
from sqlalchemy import text
engine = create_engine('sqlite:///example.db')
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
# 添加一些用户数据
session.add_all([
User(name='Alice', age=25),
User(name='Bob', age=30),
User(name='Charlie', age=None),
User(name='David', age=None)
])
session.commit()
# 查询年龄不为空的用户
query = session.query(User).filter(User.age.isnot(None))
results = query.all()
print(results)
```
在这个示例中,我们定义了一个User模型,它有一个名为age的属性。我们创建了一些用户数据,并使用is_not_null方法来查询年龄不为空的用户。这将排除那些age属性为None或NULL的用户。