在使用 fluent-mybatis 构建查询条件时,可以使用 where 方法来添加查询条件,并通过链式调用来进行条件组合。要改变条件的优先级,可以使用 bracket 方法来添加括号。\n\n以下是一个示例代码:\n\njava\nimport cn.org.atool.fluent.mybatis.If;\nimport cn.org.atool.fluent.mybatis.base.crud.IQuery;\nimport cn.org.atool.fluent.mybatis.base.model.Column;\nimport cn.org.atool.fluent.mybatis.base.model.FieldMapping;\nimport static cn.org.atool.fluent.mybatis.base.model.SqlOp.*;\n\npublic class UserQuery implements IQuery<UserQuery> {\n private static final UserMapping MAPPER = UserMapping.MAPPER;\n \n private final Column<UserQuery> column;\n \n public UserQuery() {\n this.column = new Column<>(this.getClass());\n }\n \n public UserQuery where(If<UserQuery, ?>... ifs) {\n return this.where(AND, ifs);\n }\n \n public UserQuery where(String exp, If<UserQuery, ?>... ifs) {\n this.column.where(exp, ifs);\n return this;\n }\n \n public UserQuery bracket(If<UserQuery, ?>... ifs) {\n this.column.bracket(ifs);\n return this;\n }\n \n public UserQuery bracket(String exp, If<UserQuery, ?>... ifs) {\n this.column.bracket(exp, ifs);\n return this;\n }\n \n public UserQuery selectId() {\n this.column.select(MAPPER.id);\n return this;\n }\n \n public UserQuery selectName() {\n this.column.select(MAPPER.name);\n return this;\n }\n \n public UserQuery whereIdEq(Long id) {\n this.column.eq(MAPPER.id, id);\n return this;\n }\n \n public UserQuery whereNameLike(String name) {\n this.column.like(MAPPER.name, name);\n return this;\n }\n \n public UserQuery orderBy(String... columns) {\n this.column.orderBy(columns);\n return this;\n }\n \n public UserQuery orderByDesc(String... columns) {\n this.column.orderByDesc(columns);\n return this;\n }\n \n public UserQuery limit(int limit) {\n this.column.limit(limit);\n return this;\n }\n \n public UserQuery limit(int limit, int offset) {\n this.column.limit(limit, offset);\n return this;\n }\n}\n\n\n在以上示例代码中,bracket方法用于添加括号,可以在括号内部组合条件。例如:\n\njava\nUserQuery query = new UserQuery();\nquery.where(query.bracket(q -> q.whereNameLike("John").or(q -> q.whereIdEq(1)))\n .and(q -> q.whereIdEq(2)));\n\n\n上述代码将会生成如下SQL语句:\n\nsql\nWHERE (name LIKE '%John%' OR id = 1) AND id = 2\n\n\n通过使用bracket方法,可以改变条件的优先级。

Fluent-Mybatis 查询条件:使用括号改变优先级

原文地址: https://www.cveoy.top/t/topic/p9RW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录