1、表某个字段不需要查询返回时,可以使用以下属性,默认为true
如果使用entity来接收返回结果,还是会以test=null返回,如果以Map来接收就不会返回
@TableField(select = false) private Integer test;
2、实体类某个变量并不对应表的字段时,可以使用以下属性,默认为true
@TableField(exist = false) private Integer test;
3、指定表名,这样实体类名字就不必一一对应表名
@TableName("mytest_stu") public class Stu implements Serializable {
4、MP默认实体类的id属性对应表的主键,但是如果主键不叫id,且还想MP帮我们实现主键策略自动填充,那么只能使用注解,指定主键
@TableId() private String stuId;
5、也可以直接指定表的字段名
@TableField(value = "test") private Integer testNum;
6、实例化条件构造器时,是可以传入实体entity的,默认会将entity的属性转为以“=”转为条件
Stu test = new Stu(); test.setStuName("小明"); LambdaQueryWrapper<Stu> wrapperTest1 = new LambdaQueryWrapper<>(test); LambdaQueryWrapper<Stu> wrapperTest2 = Wrappers.lambdaQuery(test)
如上,在实例化条件构造器时,wrapperTest1和wrapperTest2等都会将条件转为 (表字段)stu_name = ‘小明‘
如果不想以 = 来拼接,可以使用以下注解
@TableField(condition = SqlCondition.LIKE) private String stuName;
下次使用实体类来构造参数时, 条件就会变成 stu_name like ‘%小明%‘
我们也可以打开SqlCondition看看官方已经设定好的几种条件
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},‘%%‘)"; public SqlCondition() { } }
当上述都不满足我们的要求时,我们也可以模拟上面的写法,自行百度sql的各类符号转码
@TableField(condition = "%s > #{%s}") private Float score;
这样,下次使用entity实例化条件构造器时,条件就会变成 score > XX
原文:https://www.cnblogs.com/fanghaoxin/p/12384382.html