MP的常用注解(Entity)


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&lt;&gt;#{%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 &gt; #{%s}")
private Float score;

這樣,下次使用entity實例化條件構造器時,條件就會變成  score > XX

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM