Mybatis 十 註解配置SQL對映器 一

2021-07-10 15:02:18 字數 3006 閱讀 7120

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...