ibatis和mybatis的区别

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

ibatis和mybatis的区别作者:iroad@sina.com1概述这个区别不是很大,最主要的区别就是mybatis简化了编码的过程,不需要去写dao的实现类,直接写一个dao的接口,再写一个xml配置文件,整个mybatis就配置好了,也就是数据库就连接好了,然后在service里面直接调用dao就可以了,但是ibatis则不可以,必须要写dao的实现类,再写个returngetSqlMapClientTemplate().queryForList()神马的,mybatis是ibatis的升级版本。还有些区别就是xml里面的sql语句的写法有些小变化,但是不大。2Mybatis实现了接口绑定,使用更加方便。在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件,而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。这可以说是Mybatis最重要的改进。2.1举例2.1.1Mybatis的使用方法:只需要如下做好SBookMapper.xml、ISBookMapper,就可以直接在services中直接调用ISBookMapper中的接口方法,该方法就在xml中定义的id,如findAllBook,这个方法名称在ISBookMapper和SBookMapper.xml中必须完全一致!2.1.1.1SBookMapper.xmlmappernamespace=com.yksc.b2c.books.mapper.ISBookMapperresultMaptype=SBookid=sBookResultMapidproperty=idcolumn=id/resultproperty=titlecolumn=title/resultproperty=authorcolumn=author/resultproperty=totalcolumn=total/resultproperty=pricecolumn=price/resultproperty=isbncolumn=isbn/resultproperty=publishercolumn=publisher//resultMap!--查询班级list--selectid=findAllBookresultMap=sBookResultMapSELECT*fromsbook;/selectinsertid=saveBookparameterType=SBookselectKeykeyProperty=idresultType=intorder=BEFORESELECTLAST_INSERT_ID()ASVALUE/selectKeyINSERTINTOsbook(title,author,total,price,isbn,publisher)VALUES(#{title},#{author},#{total},#{price},#{isbn},#{publisher})/insertselectid=findBookByIdparameterType=intresultMap=sBookResultMapSELECT*fromsbookwhereid=#{id};/selectupdateid=updateBookparameterType=intupdatesbooksettitle=#{title},author=#{author},total=#{total},price=#{price},isbn=#{isbn},publisher=#{publisher}whereid=#{id}/updatedeleteid=deleteBookparameterType=intdeletefromsbookwhereid=#{id}/delete/mapper2.1.1.2ISBookMapper:packagecom.yksc.b2c.books.mapper;importjava.util.List;importcom.yksc.b2c.books.pojo.SBook;publicinterfaceISBookMapper{/***添加一本图书至数据库中**@parambook*图书对象*@throwsRuntimeException*/publicvoidsaveBook(SBookbook);/***删除图书信息**@paramid*ID编码*@throwsRuntimeException*/publicvoiddeleteBook(intid)throwsRuntimeException;/***通过出版社查找此出版社出版的所有图书列表**@parampublisher*出版社名称*@return返回特定出版社下的所有图书列表*@throwsRuntimeException*/publicListSBookfindBooksByPublisher(Stringpublisher)throwsRuntimeException;/***通过图书对应的唯一的ISBN号查找图书**@paramisbn*图书唯一的ISBN号码*@return返回此ISBN号对应的图书*@throwsRuntimeException*/publicSBookfindBookByISBN(Stringisbn)throwsRuntimeException;/***更新一本图书的信息**@parambook*图书对象*@throwsRuntimeException*/publicvoidupdateBook(SBookbook)throwsRuntimeException;/***查找库中所有的图书**@return返回图书列表*@throwsRuntimeException*/publicListSBookfindAllBook();/***通过ID查找特定的图书**@paramid*图书的ID号*@return返回此ID对应的图书信息*@throwsRuntimeException*/publicSBookfindBookById(intid)throwsRuntimeException;}2.1.1.3SBookServicespackagecom.yksc.b2c.books.service.impl;importjava.util.List;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importcom.yksc.b2c.books.mapper.ISBookMapper;importcom.yksc.b2c.books.pojo.SBook;importcom.yksc.b2c.books.service.ISBookServices;@Service(bookServices)@SuppressWarnings(unchecked)publicclassSBookServicesimplementsISBookServices{@AutowiredISBookMapperbookMapper;publicListfindAllBook()throwsRuntimeException{returnbookMapper.findAllBook();}publicSBookgetBookByISBN(Stringisbn)throwsRuntimeException{returnbookMapper.findBookByISBN(isbn);}publicListSBookgetBooksByPublisher(Stringpublisher)throwsRuntimeException{returnbookMapper.findBooksByPublisher(publisher);}publicvoidremoveBook(intid)throwsRuntimeException{bookMapper.deleteBook(id);}publicvoidsaveBook(SBookbook)throwsRuntimeException{bookMapper.saveBook(book);}publicvoidupdateBook(SBookbook)throwsRuntimeException{bookMapper.updateBook(book);}publicSBookgetBookById(intid)throwsRuntimeException{returnbookMapper.findBookById(id);}}2.1.2Ibatis的使用方法需要四个文件:Users.xml、UserDAO、UserDAOIml、UserServiceImpl在dao中调用必须使用Users_PLAT.queryUsersById另外ibatis还需要增加一个sqlMapConfig.xml,这跟hibernate一样,需要包含相关的sqlmap的xml文件的路径2.1.2.1Users.xml?xmlversion=1.0encoding=UTF-8?!DOCTYPEsqlMapPUBLIC-//ibatis.apache.org//DTDSQLMap2.0//EN=Users_PLAT!--给需要操作的类指定一个别名--typeAliasalias=Usertype=com.baway.user.model.Users/!--1、返回一个ResultSet2、遍历ResultSet获取resultMap里面指定的字段,封装到对象里面--resultMapclass=com.baway.user.model.Usersid=userMap!--实体的属性字段(getter/setter对应),column对应的是表的字段--resultproperty=idcolumn=id/resultproperty=usernamecolumn=user_name/resultproperty=passwordcolumn=password/resultproperty=agecolumn=user_age//resultMap!--如果对于关联对象的查询,不管是一对多还是多对一,都是通过resultMap的result封装--resultMapclass=com.baway.user.model.Usersid=userAllMapresultproperty=idcolumn=id/resultproperty=usernamecolumn=user_name/resultproperty=passwordcolumn=password/resultproperty=agecolumn=user_age/resultproperty=houseListcolumn=idselect=House_PLAT.queryByUserId//resultMap!--sql标签定义多个sql语句可能用到的公共字段--sqlid=insertColumnuser_name,password,user_age/sqlsqlid=userColumnid,user_name,password,user_age/sqlsqlid=insertSql#username#,#password#,#age#/sql!--par

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功