- 忽略了依赖的引入,具体请看上面的文章
注意事项
- 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
@DynamicInsert
public 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
@NoArgsConstructor
public 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 '%崇%'