国外物流公司网站模板,宁波企业建站系统,马云做中国最大的网站,郑州网站维护推广前言本文主要给大家介绍了关于mybatis注解映射sql的相关内容#xff0c;分享出来供大家参考学习#xff0c;下面话不多说了#xff0c;来一起看看详细的介绍#xff1a;结果集分页有时我们需要处理海量数据#xff0c;由于数据量太大#xff0c;所以不能一次取出所有的数…前言本文主要给大家介绍了关于mybatis注解映射sql的相关内容分享出来供大家参考学习下面话不多说了来一起看看详细的介绍结果集分页有时我们需要处理海量数据由于数据量太大所以不能一次取出所有的数据这时我们就需要使用分页功能。mybatis通过rowbounds对象提供对分页的支持如下所示select * from studdentsint offset0;//开始位置int limit25;//取出的数据条数rowbounds rowboundsnew rowbounds(offset,limit);list liststudentmapper.findallstudent(rowbounds);结果处理器有时我们需要对查询结果做一些特殊的处理这个时候就需要结果处理器举例如下我们通过sql查询学生的stud_id和name,并期望返回一个map其中key是stud_id,value是name.新建一个接口public interface resulthandler{void handleresult(resultcontext context);}主要处理流程map mapnew hashmap();sqlsession sqlsessionmybatisutil.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(usegeneratedkeystrue,keypropertystudid)int insertstudent(student student);}public interface studentmapper{insert(insert into student (name,email,addr_id,phone)values(#{name},#{email},#{address.addrid},#{phone}))selectkey(statementselect stud_id_seq.nextval from dual,keypropertystudid,resulttypeint.calss,beforetrue)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(idtrue,columnstud_id,propertystudid),result(columnname,propertyname),result(columnemail,propertyemail),result(columnphone,propertyphone)})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的注解对于动态sqlmybatis提供了不同的注解insertprovider updateprovider deleteprovider selectprovider用法如下所示首先创建一个provider类public class sqlprovider{public string findtutorbyid(int tutorid){return select tutorid,name,email from tutors where tutoridtutorid;}}使用provider类selectprovider(typesqlprovider.class,methodfindtutorbyid)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(tutoridtutorid)}}.tostring();}}或者public class sqlprovider{public string findtutorbyid(){return new sql(){{select(tutorid,name,email)from(tutors)where(tutorid#{tutorid})}}.tostring();}}总结以上就是这篇文章的全部内容了希望本文的内容对大家的学习或者工作能带来一定的帮助如果有疑问大家可以留言交流谢谢大家对萬仟网的支持。希望与广大网友互动点此进行留言吧