springmvc+spring+mybatis常用註解
@Service用於標註業務層元件
@Controller用於標註控制層元件
@Repository用於標註資料訪問元件,即DAO元件
@Component泛指元件,當元件不好歸類的時候,我們可以使用這個註解進行標註。
使用控制器註解,則對應到之前的配置檔案生成:
<bean id =“”class =“”/>
@Autowired:採用型別的方式完成自動裝配
@Resource:採用名稱+型別的方式完成自動裝配(比較保險)
@ResponseBody註解(應用於控制器)。這個註解是什麼呢,就是當你引入了傑克遜這個罐包的時候,再使用這個註解,用用SpringMVC就可以自動將它所修飾的方法的返回值轉換為JSON格式,從而不需要人為的去轉換!這個註解加上那個罐子包,可以完美的將所有的Java的物件轉換為JSON格式!
@NotEmpty(message =“使用者名稱不能為空”)
private String username;
@NotEmpty(message =“密碼不能為空”)
private String password;
private List <Role> roleList; //一個使用者具有多個角色
下面配置使用者 - 角色的多對多關係
@ManyToMany
@JoinTable(name =“t_user_role”,joinColumns = {@ JoinColumn(name =“user_id”)},inverseJoinColumns = {@ JoinColumn(name =“role_id”)})
public List <Role> getRoleList(){
return roleList ;
}
公共無效setRoleList(列表<角色>的的RoleList){
this.roleList =的的RoleList;
}
@短暫的
表示該屬性並非一個到資料庫表的欄位的對映,ORM框架將忽略該屬性。
如果一個屬性並非資料庫表的欄位對映,就務必將其標示為@Transient,否則,ORM框架預設其註解為@Basic
(1)ManyToOne(多對一)單向:不產生中間表,但可以用@Joincolumn(name =“”)來指定生成外來鍵的名字,外來鍵在多的一方表中產生!
(2)OneToMany(一對多)單向:會產生中間表,此時可以用@onooMany @Joincolumn(name =“”)避免產生中間表,並且指定了外來鍵的名字(別看@joincolumn在一中寫著,但它存在在多的那個表中)
(3)OneToMany,ManyToOne雙向(如個不在@OneToMany中加mappedy屬性就會產生中間表,此時通常在@ManyToOne的註解下再添上註解@Joincolumn(name =“”)來指定外來鍵的名字(說明:多的一方為關係維護端,關係維護端負責外來鍵記錄的更新,關係被維護端沒有權利更新外來鍵記錄)!(@ OneToMany(mappedBy =“一對多”)中,多中一的屬性“)出現mapby為被維護端|||預設為延遲載入)
用例:@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name =“child_id”)
private OrderChild orderChild;
@OneToMany(mappedBy =“orderChild”,fetch = FetchType.LAZY,cascade = {CascadeType.MERGE})
@ NotFound(action = NotFoundAction.IGNORE)//代表可以為空,允許為null
private List <OrderChildGoods> goodsList;
冬眠中@ManyToOne預設是立即載入,@一對多預設是懶載入
但是如果加上了@NotFound之後設定的取= FetchType.LAZY是不起作用的,也就是設定@NotFound後變為了立即載入渴望