mybatis對於大部分的基於xml的對映器元素提供了對應的基於註解的配置項。然而某些情況下,基於註解配置還不能支援基於xml的一些元素。
在mybatis中提供了多種註解支援不同型別的語句比如@select,@insert,@update,@delete。
@insert("insert into students(stud_id,name,email,addr_id, phone)
values(#,#,#,#,#)")
int insertstudent(student student);
使用了@insert註解會返回影響的行數。
在insert中我們如何自動生成註解可以使用options註解的usegeneratedkeys。
@insert("insert into students(name,email,addr_id, phone)
values(#,#,#,#)")
@options(usegeneratedkeys = true, keyproperty = "studid")
int insertstudent(student student);
這裡的主鍵值會通過mysql資料庫自動生成。並且生成的值將會被設定到student物件的studid屬性中。
對於沒有自增的可以使用序列
@insert("insert into students(stud_id,name,email,addr_id, phone)
values(#,#,#,#,#)")
@selectkey(statement="select stud_id_seq.nextval from dual",
keyproperty="studid", resulttype=int.class, before=true)
int insertstudent(student student);
@update("update students set name=#, email=#,
phone=# where stud_id=#")
int updatestudent(student student);
@delete("delete from students where stud_id=#")
int deletestudent(int studid);
@select("select stud_id as studid, name, email, phone from
students where stud_id=#")
student findstudentbyid(integer studid);
@select("select * from students")
@results(
)listfindallstudents();
")student findstudentbyid(int studid);
@select("select * from students")
listfindallstudents();}
一對一對映
@select("select addr_id as addrid, street, city, state, zip, country
from addresses where addr_id=#")
address findaddressbyid(int id);
@select("select * from students where stud_id=# ")
@results(
)student selectstudentwithaddress(int studid);
這裡使用了@one的註解的select屬性來指定乙個使用了完全限定名的方法上,該方法會返回乙個address物件。使用column="addr_id",則students表中列addr_id的值將會作為輸入引數傳遞給findaddressbyid()方法。
@select("select stud_id, name, email, a.addr_id, street, city,
state, zip, country" + " from students s left outer join addresses a
on s.addr_id=a.addr_id" + " where stud_id=# ")
studentwithaddressresult")
student selectstudentwithaddress(int id);
@select("select tutor_id, name as tutor_name, email, addr_id
from tutors where tutor_id=#")
@results(
)tutor findtutorbyid(int tutorid);
一對多種也會引來n+1問題,所以還是使用連線查詢。
@select("select t.tutor_id, t.name as tutor_name, email,
a.addr_id, street, city, state, zip, country, course_id, c.name,
description, start_date, end_date from tutors t left outer
join addresses a on t.addr_id=a.addr_id left outer join courses
c on t.tutor_id=c.tutor_id where t.tutor_id=#")
tutor selecttutorbyid(int tutorid);
Mybatis基於註解的sql語句
public inte ce 這是基於註解的對映方式,實現對資料的增刪改查,將sql語句直接寫在註解的括號中 這是乙個介面,其不需要類去實現它 下邊分別是插入,刪除,修改,查詢乙個記錄,查詢所有的記錄 insert insert into users name,age values public v...
Mybatis 註解形式
1.查詢 查詢 select select id,name,type,numbers,cancelled,completed,percentage from customer list listselectcustomerlistall 多表聯查 所有的關聯實體類必須引入此註解 jsonignore...
Mybatis 動態SQL註解 in操作符的用法
在sql語法中如果我們想使用in的話直接可以像如下一樣使用 update user set status 1 where id in 1,2,3 select from user where id in 1,2,3 但是如果在mybatis中的使用 in 操作符,像下面這樣寫的話,肯定會報錯 upd...