MyBatis-Plus中@TableField和@TableId說明
一、@TableField(value = “表字段”)
如果表的字段與pojo類的屬性值對應(yīng)不上,就像表字段為user_name,但是屬性的為uName時,在查詢所有中就會報(bào)錯,找不到表的字段信息。
java.sql.SQLSyntaxErrorException: Unknown column ‘u_name’ in ‘field list’
就是表的字段和User類沒有對應(yīng)上。
這里就需要加入該注解@TableField(value = “user_name”),解決字段不一致問題(value寫表字段名),使得一一對應(yīng)起來。
@TableField(value = "user_name")
private String uName;
注:
但如果表字段user_name。定義的userName。
駝峰命名會自動識別。不寫注解也可以)
再次運(yùn)行即可解決該問題 如圖所示:

二、@TableField(select = false)
這是用來解決如果用戶名密碼不想顯示時可以在屬性上添加該字段,sql語句就不會去查詢該字段。
這樣在查詢時密碼字段會變成null輸出,保證安全性。
//查詢不顯示用戶密碼
@TableField(select = false)
private String userPassword;
三、@TableField(exist = false)
在添加中,如果User類下的屬性數(shù)據(jù)庫字段沒有,再添加時還會給這個屬性賦值,然后發(fā)送到mapper執(zhí)行插入數(shù)據(jù)操作時就會報(bào)錯。
java.sql.SQLSyntaxErrorException: Unknown column ‘hobby’ in ‘field list’
Mybatis-plus忽略表中映射的字段:
Mybatis-plus使用entity和數(shù)據(jù)庫進(jìn)行關(guān)聯(lián)映射,有時候可能有些字段,在當(dāng)前表中不存在,但是操作的時候,又需要進(jìn)行使用,所以有時候就需要進(jìn)行忽略。
具體如何忽略如下:
- @TableField(exist = false):表示該屬性不是表中字段,但又是必須使用的。
- @TableField(exist = true):表示該屬性是表中字段。
執(zhí)行下面的測試方法進(jìn)行測試:
//測試添加方法
@Test
public void testInsert(){
User user=new User();
user.setUserName("哈哈111");
user.setUserEmail("12433");
user.setUserRole("ADMIN");
user.setUserStatus("0");
user.setUserPassword("12344");
// 表中沒有字段
user.setHobby("足球");
//受影響的行數(shù) count
int count = userMapper.insert(user);
if(count>0){//添加成功
//輸出所有數(shù)據(jù)
testSelectList();
}else {//添加失敗
System.out.println("添加失敗~");
}
}
解決該方法:
就要使用 @TableField(exist = false)注解,表示數(shù)據(jù)表中沒有該字段,添加時生成sql代碼就會知道。
//數(shù)據(jù)庫中沒有該字段時需要添加注解 @TableField(exist = false) private String hobby;
四、@TableId(type = IdType.AUTO)補(bǔ)充
這個是通過id查詢時,如果不在id主鍵屬性上添加該注解的話,就會報(bào)以下錯誤
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.imust.mp.mapper.UserMapper.selectById
這就表名雖然有屬性和表字段也對應(yīng),但是在通過id查詢時MP不知道這個是主鍵,所以無法執(zhí)行該方法,解決方法就是在屬性上添加@TableId(type = IdType.AUTO),type等于的值有很多,一般主鍵都是用這個。
@TableId(type = IdType.AUTO)
private Integer userId;
查看運(yùn)行效果 如圖所示:

總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot項(xiàng)目依賴和配置最新示例講解
這篇文章主要介紹了SpringBoot項(xiàng)目依賴和配置,這里主要是搭建項(xiàng)目常用到的maven依賴以及搭建項(xiàng)目會需要用到的一些配置文件,本文通過示例代碼給大家詳細(xì)講解,需要的朋友可以參考下2022-11-11
RocketMQ消息生產(chǎn)者是如何選擇Broker示例詳解
這篇文章主要為大家介紹了RocketMQ消息生產(chǎn)者是如何選擇Broker示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
java 記錄一個子串在整串中出現(xiàn)的次數(shù)實(shí)例
今天小編就為大家分享一篇java 記錄一個子串在整串中出現(xiàn)的次數(shù)實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
SpringBoot如何使用@Cacheable進(jìn)行緩存與取值
這篇文章主要介紹了SpringBoot如何使用@Cacheable進(jìn)行緩存與取值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
SpringBoot+Mybatis使用Enum枚舉類型總是報(bào)錯No enum constant&n
這篇文章主要介紹了SpringBoot+Mybatis使用Enum枚舉類型總是報(bào)錯No enum constant XX問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
spring security動態(tài)配置url權(quán)限的2種實(shí)現(xiàn)方法
對于使用spring security來說,存在一種需求,就是動態(tài)去配置url的權(quán)限,即在運(yùn)行時去配置url對應(yīng)的訪問角色。下面這篇文章主要給大家介紹了關(guān)于spring security動態(tài)配置url權(quán)限的2種實(shí)現(xiàn)方法,需要的朋友可以參考下2018-06-06

