MyBatis详细实例操作.docx
- 文档编号:6517271
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:15
- 大小:117.36KB
MyBatis详细实例操作.docx
《MyBatis详细实例操作.docx》由会员分享,可在线阅读,更多相关《MyBatis详细实例操作.docx(15页珍藏版)》请在冰豆网上搜索。
MyBatis详细实例操作
MyBatis九步详细实例操作
MyBatis一种优秀的O/Rmapping框架,是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis消除 了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis和Hibernate对比:
1.MyBatis非常简单易学,Hibernate相对较复杂,门槛较高。
2.二者都是比较优秀的开源产品
3.当系统属于二次开发,无法对数据库结构做到控制和修改,那MyBatis的灵活性将比Hibernate更适合
4.系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。
在这种情况下MyBatis会有更好的可控性和表现。
5.MyBatis需要手写sql语句,也可以生成一部分,Hibernate则基本上可以自动生成,偶尔会写一些Hql。
同样的需求,MyBatis的工作量比Hibernate要大很多。
类似的,如果涉及到数据库字段的修改,Hibernate修改的地方很少,而MyBatis要把那些sqlmapping的地方一一修改。
6.以数据库字段一一对应映射得到的PO和Hibernte这种对象化映射得到的PO是截然不同的,本质区别在于这种PO是扁平化的,不像Hibernate映射的PO是可以表达立体的对象继承,聚合等等关系的,这将会直接影响到你的整个软件系统的设计思路。
7.当然因为HQL和SQL查询的问题性能上MyBatis很明显就比Hibernate要快。
OK看了上面这么的多那么到底MyBatis怎么实现呢。
下面就让我们一起走进MyBatis的大门吧。
第一步:
做好准备工作
首先我们要到MyBatis官网下载MyBatis开发包http:
//www.mybatis.org/
我下面例子用的事3.1.1的版本:
有了开发包我们可以继续往下走了哦。
第二步:
创建工程、配置开发环境
1:
解压刚才下走的ZIP包
在这个文件里面我就不一个个介绍了。
2:
打开你的开发工具:
我这里用的是MyEclipse9.0
2.1创建工程jibatis
2.2向工程导入所需要的包
这里导入的就是上面1所解压的jar包
注意:
导入的jar包中还有一个mysql-connector-java-5.0.4-bin.jar这个jar包这个文件是mysql驱动的jar包我这里用到的数据库是mysql。
OK到这里你就基本上创建好一个项目了而且是支持MyBatis的项目。
第三步开始我们就进入到编码过程
第三步:
数据源配置
在项目中创建com.ibatis包(这里为了项目进行方便所有类或xml文件都放在这一个包下)
在com.ibatis创建sqlmap-config.xml
sqlmap-config.xml主要是用来配置数据源代码如下:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEconfiguration
PUBLIC"-//ibatis.apache.org//DTDConfig3.0//EN"
"http:
//ibatis.apache.org/dtd/ibatis-3-config.dtd">
mysql: //localhost: 3306/lifesense? characterEncoding=UTF-8"/> 到这里第三步完成。 下面我们继续往下走吧。 第四步: 配置映射xml(TestSql.xml) 在com.ibatis创建TestSql.xml 恭喜您来到第四步第四部很简单,如果学过Hibernate都知道Hibernate都有一个映射文件,为什么要有这个文件那是为了实现面向对象而要实现的。 具体代码如下: xmlversion="1.0"encoding="UTF-8"? > DOCTYPEmapper PUBLIC"-//ibatis.apache.org//DTDMapper3.0//EN" "http: //ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> select*fromtestlimit1000 insertintotest(id,name,createtime,email,tilepath,lastloginip,lastlogintime,nickname,password,picture,sessionid,sex,tel,username) values(#{id},#{name},#{createtime},#{email},#{tilepath},#{lastloginip},#{lastlogintime},#{nickname},#{password},#{picture},#{sessionid},#{sex},#{tel},#{username}) 在上面代码中您可以适当减少字段这样会快点配置完成。 OK第四步完成。 那么到这里所有要配置的文件基本都配置完了下面就是我们要实现Bean的时候了。 第五步: model(bean)类(Test.java) 在com.ibatis创建Test.java 那么这个类没有什么好说的就是一些字段属性 之后完成getset方法就OK了 不过还是贴出代码方面朋友们查看: publicclassTestimplementsSerializable{ privatestaticfinallongserialVersionUID=-2478236396012275225L; privateStringid; //用户�? privateStringusername; //密码 privateStringpassword; //姓名 privateStringname; //昵称 privateStringnickname; //性别可�? �? 1为男�? �? 女�? privateStringsex; //用户头像图片 privateStringpicture; //创建时间 privateStringcreatetime; //上次登录时间 privateStringlastlogintime; privateStringtilepath; publicStringgetTilepath(){ returntilepath; } publicvoidsetTilepath(Stringtilepath){ this.tilepath=tilepath; } //上次登录IP privateStringlastloginip; //当前会话ID privateStringsessionid; //联系电话 privateStringtel; //邮箱 privateStringemail; publicStringgetId(){ returnid; } publicvoidsetId(Stringid){ this.id=id; } publicStringgetUsername(){ returnusername; } publicvoidsetUsername(Stringusername){ this.username=username; } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicStringgetSex(){ returnsex; } publicvoidsetSex(Stringsex){ this.sex=sex; } /** *获取用户头像URL *@return用户头像URL */ publicStringgetPicture(){ returnpicture; } /** *设置用户头像URL *@parampicture用户头像URL */ publicvoidsetPicture(Stringpicture){ this.picture=picture; } publicStringgetLastLoginIp(){ returnlastloginip; } publicvoidsetLastLoginIp(Stringlastloginip){ this.lastloginip=lastloginip; } publicStringgetSessionid(){ returnsessionid; } publicvoidsetSessionid(Stringsessionid){ this.sessionid=sessionid; } publicStringgetCreatetime(){ returncreatetime; } publicvoidsetCreatetime(Stringcreatetime){ this.createtime=createtime; } publicStringgetLastlogintime(){ returnlastlogintime; } publicvoidsetLastLogintime(Stringlastlogintime){ this.lastlogintime=lastlogintime; } /** *获取昵称 *@returnthenickname昵称 */ publicStringgetNickname(){ returnnickname; } /** *设置昵称 *@paramnickname昵称 */ publicvoidsetNickname(Stringnickname){ this.nickname=nickname; } publicStringgetTel(){ returntel; } publicvoidsetTel(Stringtel){ this.tel=tel; } publicStringgetEmail(){ returnemail; } publicvoidsetEmail(Stringemail){ this.email=email; } 在这一步要注意的是要和第四步中的字段匹配这个是硬性要求来的大家可以这两部项目查看就明白了。 第六步: 实例化SqlSessionFactory 在com.ibatis创建GetSqlSessionFactory.java 这个类的原理和实现Hibernate实例化的原来一样我们可以定义一个单例模式来完成实例化。 代码如下: publicclassGetSqlSessionFactory{ privatestaticSqlSessionFactorysqlSessionFactory=null; privatestaticGetSqlSessionFactorygetSqlSessionFactory=null; privateGetSqlSessionFactory(){ Stringrs="com/ibatis/sqlmap-config.xml"; Readerreader=null; try{ reader=Resources.getResourceAsReader(rs); }catch(IOExceptione){ e.printStackTrace(); } sqlSessionFactory=newSqlSessionFactoryBuilder().build(reader); //注解方式查询时需要注册mapper sqlSessionFactory.getConfiguration().addMapper(UserDaoTestImpl.class); } publicstaticGetSqlSessionFactorygetInstance(){ if(getSqlSessionFactory==null){ getSqlSessionFactory=newGetSqlSessionFactory(); } returngetSqlSessionFactory; } publicstaticSqlSessionFactorygetSqlSessionFactory(){ returnsqlSessionFactory; } 第七步: DAO业务处理层 在com.ibatis创建UserDaoTest.java DAO不想多说大家直接参考代码: publicclassUserDaoTestimplementsUserDaoTestImpl{ @SuppressWarnings("static-access") publicList SqlSessionsession=GetSqlSessionFactory.getInstance().getSqlSessionFactory().openSession(); List try{ //xml方式查询 test=session.selectList("testid"); //注解方式查询 //UserDaoTestImpluserDaoTestImpl=session.getMapper(UserDaoTestImpl.class); //test=userDaoTestImpl.getTest(); }catch(Exceptione){ e.printStackTrace(); }finally{ session.close(); } returntest; } publicvoidinsertvalue(Testtest){ @SuppressWarnings("static-access") SqlSessionsession=GetSqlSessionFactory.getInstance().getSqlSessionFactory().openSession(); try{ session.selectOne("insertvalues",test); }catch(Exceptione){ e.printStackTrace(); }finally{ session.close(); } } } 到这里其实就可以完成的但是我们的代码实现了接口上面也有提到我们可以用注解的方式来实现映射关系。 注解方式就是其中一种大家在测试的时候可以使用xml方式也可以使用注解的方式。 好吧我们再努力一下下看完下面的配置吧。 第八步: 接口 在com.ibatis创建UserDaoTestImpl.java 接口中没有什么说的其中有一样要注意的就是注解方式。 详细看代码: publicinterfaceUserDaoTestImpl{ @Select("select*fromtestlimit1000") List voidinsertvalue(Testtest); } 在这里我只实现了一个查询的注解方式还有插入更新删除等操作希望大家可以自己完成。 不好意思谢谢。 第九步: Servlet实验 到这里大家都可以写一个Servlet来验证一下你的MyBaits是否能跑起来了。 如果大家按照上面的实现的话我可以保证百分百可以成功的。 Servlet我就不贴代码了这个你懂的。 嘻嘻。 等你所有都完成之后你会发现你的项目是这样的: 匆忙中命名空间不好包实现不规范请大家多多担待因为这个项目主要是介绍了MyBatis的运用和实现。 所以我在做这个文档中并没有什么规划只是想尽快写一个测试用例。 请大家多多包涵: 如果有什么问题的可以邮件: ****************我们一起学习 谢谢
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MyBatis 详细 实例 操作