- 忽略了依赖的引入,具体请看上面的文章
注意事项
- dao层必须继承 `JpaBasicsDao`
- service层必须继承 `J2Service`
- serviceImpl层必须继承 `J2ServiceImpl`
配合CommUtils.getSelectBean2 使用
- 2.0.6版本废弃了 CommUtils 改为 JpaUtils
- 默认拼装条件为 and eq (where field_1 = 你好 and field_2 = hi ), 如果需要使用其他条件则用
**@JpaSelectOperator**进行处理- key值为空,默认会忽略
第一步
- 在
**实体类**或者**dto类**使用**@JpaSelectOperator**具体看注释- 如果需要忽略某个字段不让他进行拼装where可以用
**@JpaSelectIgnoreField**
实体
/*** 用户表 实体* @author : tn* @date : 2021-9-10*/@Entity@Table(name = "sys_user",indexes = {@Index(name = "user_no_index", columnList = "userNo", unique = true),})@org.hibernate.annotations.Table(appliesTo = "sys_user", comment = "用户表")@Data@EqualsAndHashCode(callSuper = true)@DynamicUpdate@DynamicInsertpublic class User extends CommonBean<User> {/*** 用户编号*/@Column(columnDefinition = " varchar(50) not null comment ' 用户编号' ")@JpaSelectOperator(operator = SQLOperator.LIKE, connect = SQLConnect.OR)private String userNo;/*** 姓名*/@Column(columnDefinition = " varchar(100) not null comment ' 姓名' ")@JpaSelectOperator(operator = SQLOperator.LIKE, connect = SQLConnect.OR)private String name;/*** 地址*/@Column(columnDefinition = " varchar(100) comment ' 地址' ")private String address;/*** 登录名称*/@Column(columnDefinition = " varchar(100) not null comment '登录名称' ")@JpaSelectOperator(operator = SQLOperator.EQ, connect = SQLConnect.AND)private String loginName;/*** 登录密码*/@Column(columnDefinition = " varchar(100) not null comment '登录密码' ")private String loginPwd;/*** 手机号/联系电话*/@Column(columnDefinition = " varchar(15) comment ' 手机号/联系电话 ' ")private String phone;/*** 用户头像*/@Column(columnDefinition = " varchar(60) comment ' 用户头像' ")private String userIcon;}
DTO
/*** 用户-分页查询 dto* @author tnnn* @version V1.0* @date 2022-06-24 11:57*/@ApiModel(value = "用户查询参数", description = "用户操作")@ToString@Getter@Setter@Builder(toBuilder = true)@AllArgsConstructor@NoArgsConstructorpublic class SelectUserDTO extends SerializableVO<SelectUserDTO> {/*** 用户编号*/@Column(columnDefinition = " varchar(50) not null comment ' 用户编号' ")@JpaSelectOperator(operator = SQLOperator.LIKE, connect = SQLConnect.OR, ignoreNull = false)private String userNo;/*** 姓名*/@Column(columnDefinition = " varchar(100) not null comment ' 姓名' ")@JpaSelectOperator(operator = SQLOperator.LIKE, connect = SQLConnect.OR)private String name;/*** 地址*/@Column(columnDefinition = " varchar(100) comment ' 地址' ")private String address;/*** 登录名称*/@Column(columnDefinition = " varchar(100) not null comment '登录名称' ")@JpaSelectOperator(operator = SQLOperator.EQ, connect = SQLConnect.AND)private String loginName;/*** 登录密码*/@Column(columnDefinition = " varchar(100) not null comment '登录密码' ")private String loginPwd;/*** 手机号/联系电话*/@Column(columnDefinition = " varchar(15) comment ' 手机号/联系电话 ' ")private String phone;/*** 用户头像*/@Column(columnDefinition = " varchar(60) comment ' 用户头像' ")private String userIcon;}
第二步
使用 JPAUtilExpandCriteria 开始查询
/*** 用户查询 - getSelectBean 在实体上使用注解* @param user 查询条件* @return*/@ApiOperation(value = "查询用户",notes = "用户管理")@PostMapping("findByUser")public ResultVO<List<UserVO>> getUserByPage(@RequestBody SelectUserDTO user){User to = user.to(User.class);JPAUtilExpandCriteria<User> selectBean = CommUtils.getSelectBean(to);List<User> users = userService.getJpaBasicsDao().findAll(selectBean);return ResultVO.successForData(ListTo.to(UserVO.class, users));}/*** 用户查询 - getSelectBean2 在实体的异形(dto,vo)上使用注解* @param user 查询条件* @return*/@ApiOperation(value = "查询用户",notes = "用户管理")@PostMapping("findByUser2")public ResultVO<List<UserVO>> getUserByPage2(@RequestBody SelectUserDTO selectUser){JPAUtilExpandCriteria<User> selectBean = CommUtils.getSelectBean2(selectUser);List<User> users = userService.getJpaBasicsDao().findAll(selectBean);return ResultVO.successForData(ListTo.to(UserVO.class, users));}
说明
JPAUtilExpandCriteria<User> selectBean = CommUtils.getSelectBean(to);根据@JpaSelectOperator进行对参数值的拼装,选择该字段的 运行符 和 sql连接符-- 此sql 不是上面表的,但是使用的是上面的方法步骤select userentity0_.id as id1_8_, userentity0_.update_user_name as update_u2_8_, userentity0_.create_user_name as create_u3_8_, userentity0_.update_time as update_t4_8_, userentity0_.create_time as create_t5_8_, userentity0_.user_no as user_no6_8_, userentity0_.login_name as login_na7_8_, userentity0_.login_password as login_pa8_8_, userentity0_.status as status9_8_, userentity0_.user_type as user_ty10_8_, userentity0_.company_no as company11_8_, userentity0_.company_name as company12_8_ from sys_user userentity0_ where userentity0_.company_no like '%Administrator%' or userentity0_.company_name like '%崇%'
