日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

java注解 sql_mybatis中注解映射SQL示例代码

發布時間:2023/12/4 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java注解 sql_mybatis中注解映射SQL示例代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

本文主要給大家介紹了關于mybatis注解映射sql的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:

結果集分頁

有時我們需要處理海量數據,由于數據量太大,所以不能一次取出所有的數據,這時我們就需要使用分頁功能。mybatis通過rowbounds對象提供對分頁的支持,如下所示:

select * from studdents

int offset=0;//開始位置

int limit=25;//取出的數據條數

rowbounds rowbounds=new rowbounds(offset,limit);

list list=studentmapper.findallstudent(rowbounds);

結果處理器

有時我們需要對查詢結果做一些特殊的處理,這個時候就需要結果處理器,舉例如下,我們通過sql查詢學生的stud_id和name,并期望返回一個map,其中key是stud_id,value是name.

新建一個接口:

public interface resulthandler

{

void handleresult(resultcontext context);

}

主要處理流程:

map map=new hashmap();

sqlsession sqlsession=mybatisutil.opensession();

sqlsession.select("com.mybatis3.mappers.studentmapper.findallstudents",new resulthandler(){

public void handlerresult(resultcontext context)

{

student student=(student)context.getresultobject();

map.put(student.getstudid(),student.getname());

}

})

緩存

緩存對于很多應用來說都是很重要的,因為它能提高系統的性能。mybatis內建了緩存支持,默認情況下,一級緩存是打開的,即如果你使用相同的sqlsession接口調用相同的select查詢,查詢結果從緩存中取得而不是去查詢數據庫。

也可以通過標簽配置二級緩存。當配置了二級緩存后,也就意味著所有的查詢結果都會被緩存,insert,update,delete語句會更新緩存,cache的緩存管理算法是lru。除了內建的緩存之外,mybatis還整合了第三方緩存框架例如ehcache等。

注解@insert @update @select @ delete

舉例說明注解的用法:

public interface studentmapper

{

@insert("insert into student (stud_id, name, email, addr_id, phone)values(#{studid},#{name},#{email},#{address.addrid},#{phone})")

int insertstudent(student student);

}

public interface studentmapper

{

@insert("insert into student (name,email,addr_id,phone)values(#{name},#{email},#{address.addrid},#{phone})")

@options(usegeneratedkeys=true,keyproperty="studid")

int insertstudent(student student);

}

public interface studentmapper

{

@insert("insert into student (name,email,addr_id,phone)values(#{name},#{email},#{address.addrid},#{phone})")

@selectkey(statement="select stud_id_seq.nextval from dual",keyproperty="studid",resulttype=int.calss,before=true)

int insertstudent(student student);

}

@update("update students set name=#{name},email=#{email}")

int updatestudent(student student);

@delete("delete form students where stud_id=#{studid}")

int deletestudent(int studid)

@select("select name,email,phone from students where stud_id=#{studid}")

student findstudentbyid(integer studid);

結果注解

@select("select name,email,phone from students where stud_id=#{studid}")

@results({

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

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

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

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

})

student findstudentbyid(integer studid);

結果注解有一個缺點,就是在一個查詢方法前面都要寫一遍,不能重用。解決這個問題方案是:

定義一份結果映射文件如下所示:

.......

@select("select name,email,phone from students where stud_id=#{studid}")

@resultmap("com.mybatis3.mappers.studentmapper.studentresult")

student findstudentbyid(integer studid);

動態sql的注解

對于動態sql,mybatis提供了不同的注解,@insertprovider @updateprovider @deleteprovider @selectprovider

用法如下所示:

首先創建一個provider類:

public class sqlprovider

{

public string findtutorbyid(int tutorid)

{

return "select tutorid,name,email from tutors where tutorid="+tutorid;

}

}

使用provider類:

@selectprovider(type=sqlprovider.class,method="findtutorbyid")

tutor findtutorbyid(int tutorid);

但是使用字符串連接創建sql語句容易出現問題,所以mybatis提供了一個sql工具,簡化了構建動態sql的方式;

如下所示:

public class sqlprovider

{

public string findtutorbyid(int tutorid)

{

return new sql(){{

select("tutorid,name,email")

from("tutors")

where("tutorid="+tutorid)

}}.tostring();

}

}

或者

public class sqlprovider

{

public string findtutorbyid()

{

return new sql(){{

select("tutorid,name,email")

from("tutors")

where("tutorid=#{tutorid}")

}}.tostring();

}

}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對萬仟網的支持。

希望與廣大網友互動??

點此進行留言吧!

總結

以上是生活随笔為你收集整理的java注解 sql_mybatis中注解映射SQL示例代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。