1.高版本的mybatis plus 有queryWrapper 条件构造器。可以完成,但是高版本的mybatis plus没有Wrapper,会不兼容。
2.获取实体类信息,然后自己组装sql语句。(因为一些原因,我是这样处理的)
package com.example.springboot_springmvc_mybatis.util.mybatisplus;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.mapper.Wrapper;
import org.apache.poi.ss.formula.functions.T;
import java.lang.reflect.Field;
public class MybatisPlusUtil {
/**
* mybatis pluus 查询实体类非空字段
* @param T
* @param <T>
*/
public static<T> void notNullField(T T, Wrapper<T> wrapper){
for (Field field : T.getClass().getDeclaredFields()) {
field.setAccessible(true);
try {
//序列化 字段不需要查询
if("serialVersionUID".equals(field.getName())){
continue;
}
//属性为空,不用查询
if(field.get(T) == null){
continue;
}
//主键 注解TableId
TableId tableId = field.getAnnotation(TableId.class);
if (tableId != null){
//主键
wrapper.eq(tableId.value(),field.get(T));
continue;
}
//数据库中字段名和实体类属性不一致 注解TableField
TableField tableField = field.getAnnotation(TableField.class);
if(tableField != null){
if(tableField.exist()){
wrapper.eq(tableField.value(),field.get(T));
}// @TableField(exist = false) 不是表中内容 不形成查询条件
continue;
}
//数据库中字段名和实体类属性一致
wrapper.eq(field.getName(),field.get(T));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
package com.example.springboot_springmvc_mybatis.util.mybatisplus;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.mapper.Wrapper;
import org.apache.poi.ss.formula.functions.T;
import java.lang.reflect.Field;
public class MybatisPlusUtil {
/**
* mybatis pluus 查询实体类非空字段
* @param T
* @param <T>
*/
public static<T> void notNullField(T T, Wrapper<T> wrapper){
for (Field field : T.getClass().getDeclaredFields()) {
field.setAccessible(true);
try {
//序列化 字段不需要查询
if("serialVersionUID".equals(field.getName())){
continue;
}
//属性为空,不用查询
if(field.get(T) == null){
continue;
}
//主键 注解TableId
TableId tableId = field.getAnnotation(TableId.class);
if (tableId != null){
//主键
wrapper.eq(tableId.value(),field.get(T));
continue;
}
//数据库中字段名和实体类属性不一致 注解TableField
TableField tableField = field.getAnnotation(TableField.class);
if(tableField != null){
if(tableField.exist()){
wrapper.eq(tableField.value(),field.get(T));
}// @TableField(exist = false) 不是表中内容 不形成查询条件
continue;
}
//数据库中字段名和实体类属性一致
wrapper.eq(field.getName(),field.get(T));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}