查询专栏:MP默认查询原则
查询的是数据库列名非实体类属性。
实体作为条件构造器构造方法的参数
文章目录
/*** 1.传递的参数如果是实体类* <p>* 注:这种情况传递过来的参数是等值的也就是=* 如果不想等值,例如:like '条件'* 在实体类中,需要处理属性的上面添加@TableField(condition ="%s<#{%s}")* <p>* 里面的condition,可以采用已经有的栗子,如果没有符合你需求的,* 可以参考SqlCondition(比较条件常量定义类)它的形式,仿写除符合自己需求的condition* <p>* 例如:age 小于 条件* age < '传过来的条件'** @TableField(condition ="%s<,#{%s}")* age*/@Testpublic void selectByWrapperEntity() {User whereUser = new User();whereUser.setName("刘雨红");whereUser.setAge(32);QueryWrapper<User> queryWrapper = new QueryWrapper<User>(whereUser);List<User> userList = userMapper.selectList(queryWrapper);userList.forEach(System.out::println);}/*sql形式:SELECT id,name,age,email,manager_id,create_time FROM user WHERE name=? AND age=?不等值的sql:SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE CONCAT('%',?,'%') AND age<?*/
/*** 2.传递的参数如果是实体类和参数条件同时存在,这种情况互不影响,条件都会拼接在where后边* <p>* 注意:不要重复了*/@Testpublic void selectByWrapperEntity2() {User whereUser = new User();whereUser.setName("刘雨红");whereUser.setAge(32);QueryWrapper<User> queryWrapper = new QueryWrapper<>(whereUser);queryWrapper.like("name", "雨").lt("age", 40);List<User> userList = userMapper.selectList(queryWrapper);userList.forEach(System.out::println);}/*sql形式:SELECT id,name,age,email,manager_id,create_time FROM userWHERE name=? AND age=? AND name LIKE ? AND age < ?*/
实体类:
@Data
public class User {// 主键private Long id;//姓名@TableField(condition = SqlCondition.LIKE)private String name;//年龄@TableField(condition ="%s<#{%s}")private Integer age;//邮箱private String email;// 上级idprivate Long manager_id;//创建时间private LocalDateTime createTime;
}
参考SqlCondition类的源码,自定义符合自己需求的表达式
/*** SQL 比较条件常量定义类** @author hubin* @since 2018-01-05*/
public class SqlCondition {/*** 等于*/public static final String EQUAL = "%s=#{%s}";/*** 不等于*/public static final String NOT_EQUAL = "%s<>#{%s}";/*** % 两边 %*/public static final String LIKE = "%s LIKE CONCAT('%%',#{%s},'%%')";/*** % 左*/public static final String LIKE_LEFT = "%s LIKE CONCAT('%%',#{%s})";/*** 右 %*/public static final String LIKE_RIGHT = "%s LIKE CONCAT(#{%s},'%%')";}
想学习更多微服务、分布式、中间件、数据库、项目快速构建等系列技术
请访问http://gblfy.com
让我们一起进步!!!