MyBatis註解開發

2021-09-12 13:54:31 字數 3495 閱讀 1389

mybatis作為乙個輕量級的半orm框架,由於其上手快、開發快捷,在企業中的中小型專案應用較廣泛,下面我們來演示一下如何使用mybatis的註解開發方式來進行**編寫。

【開發環境介紹】:

資料庫使用mysql,mybatis使用3.4.1(沒有使用spring整合),mysql驅動5.1.36。

【pojo+表】

提供兩個pojo類:user(使用者)和orders(訂單),分別對應的資料庫表下圖:

user類:

* 使用者表(id,name,birthday)對應pojo

public class user ")

public user getuseraccordsql(integer userid);

呼叫測試:

//1。根據使用者id查詢使用者(sql語句返回的字段和user類的屬性相對應)

@test

public void selectuseraccordsql() catch (exception e) ,#)")

//表中id欄位為自增欄位。在插入之後執行mysql的select last_insert_id()函式查詢本次事務中插入的該條記錄id,並將值賦予到傳入的user物件中

@selectkey(before=false,keyproperty="id",statement="select last_insert_id()",

resulttype = integer.class)

public void insertuser(user user);

呼叫測試:

//2.儲存使用者並且將使用者的id賦值

@test

public void insertuser() {

sqlsession opensession = sqlsessionfactory.opensession();

user user = new user();

user.setname("黑馬");

user.setbirthday(new date());

opensession.insert("insertuser", user);

system.out.println(user.getid());

opensession.commit();

opensession.close();

列印結果(id為26,新增到了資料庫表中):

debug [main] - ==> preparing: insert into user(name,birthday) values(?,?)

debug [main] - ==> parameters: 黑馬(string), 2018-03-27 18:42:23.601(timestamp)

debug [main] - <== updates: 1

debug [main] - ==> preparing: select last_insert_id()

debug [main] - ==> parameters:

debug [main] - <== total: 1

debug [main] - committing jdbc connection [com.mysql.jdbc.jdbc4connection@68a70c74]

3)查詢所有訂單資訊,並能夠查詢該訂單屬於哪個使用者

介面:

@select("select o.*,u.id as userid,u.name,u.birthday from orders o inner join user u on o.user_id = u.id")

@results(value= {

@result(id=true,column="id",property="id"),

@result(column="user_id",property="userid"),

@result(column="number",property="number"),

@result(column="birthday",property="user.birthday"),//注意,此處使用的是user.***(***為user物件的屬性)

@result(column="name",property="user.name"),

@result(column="userid",property="user.id"),

public listgetordersusermy();

呼叫測試:

@test

public void selectordersusermy() {

sqlsession opensession = sqlsessionfactory.opensession();

listorders = opensession.selectlist("getordersusermy");

system.out.println(orders);

列印結果(可以看到有三個訂單,1和2訂單屬於使用者張三,3訂單屬於李四):

debug [main] - ==> preparing: select o.*,u.id as userid,u.name,u.birthday from orders o inner join user u on o.user_id = u.id

debug [main] - ==> parameters:

debug [main] - <== total: 3

[orders [id=1, userid=1, number=10086, createtime=tue mar 06 14:51:36 cst 2018, price=100.50, user=user [id=1, name=張三, birthday=sun jun 18 14:14:51 cst 2017, orderset=null]],

orders [id=2, userid=1, number=10087, createtime=tue mar 06 14:51:55 cst 2018, price=365.00, user=user [id=1, name=張三, birthday=sun jun 18 14:14:51 cst 2017, orderset=null]],

orders [id=3, userid=2, number=10088, createtime=sun mar 04 14:51:55 cst 2018, price=1004.00, user=user [id=2, name=李四, birthday=mon jun 05 14:41:56 cst 2017, orderset=null]]]

MyBatis註解開發

insert 實現新增 update 實現更新 delete 實現刪除 select 實現查詢 result 實現結果集封裝 results 可以與 result 一起使用,封裝多個結果集 resultmap 實現引用 results 定義的封裝 one 實現一對一結果集封裝 many 實現一對多結...

MyBatis 使用註解開發

關於介面的理解 乙個個體有可能有多個抽象面。抽象體與抽象面是有區別的。三個面向區別 我們在我們的介面中新增註解 查詢全部使用者 select select id,name,pwd password from user public list getalluser 在mybatis的核心配置檔案中注入...

Mybatis使用註解開發

1.註解在介面實現 select select from user public list getusers 2.配置檔案中繫結介面 class 3.測試 本質 反射機制實現 底層 動態 4.crud select select from user list getusers 方法存在多個引數,所有...