1/47目录mybatis实战教程(mybatisinaction)之一:开发环境搭建..................................................3mybatis实战教程(mybatisinaction)之二:以接口的方式编程..........................................8mybatis实战教程(mybatisinaction)之三:实现数据的增删改查.......................................10mybatis实战教程(mybatisinaction)之四:实现关联数据的查询.......................................14mybatis实战教程(mybatisinaction)之五:与spring3集成.................................................18mybatis实战教程(mybatisinaction)之六:与SpringMVC的集成.....................................22mybatis实战教程(mybatisinaction)之七:实现mybatis分页............................................27mybatis实战教程(mybatisinaction)之八:mybatis动态sql语句......................................36mybatis实战教程(mybatisinaction)之九:mybatis代码生成工具的使用.........................412/47写在这个系列前面的话:以前曾经用过ibatis,这是mybatis的前身,当时在做项目时,感觉很不错,比hibernate灵活。性能也比hibernate好。而且也比较轻量级,因为当时在项目中,没来的及做很很多笔记。后来项目结束了,我也没写总结文档。已经过去好久了。但最近突然又对这个ORM工具感兴趣。因为接下来自己的项目中很有可能采用这个ORM工具。所以在此重新温习了一下mybatis,因此就有了这个系列的mybatis教程.什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(PlanOldJavaObjects,普通的Java对象)映射成数据库中的记录.orm工具的基本思想无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:1.从配置文件(通常是XML配置文件中)得到sessionfactory.2.由sessionfactory产生session3.在session中完成对数据的增删改查和事务提交等.4.在用完之后关闭session。5.在java对象和数据库之间有做mapping的配置文件,也通常是xml文件。这是一个系列教程。我将把所有的链接都记录在此,以供参考.所有程序的jar包,可以在第六个例子的程序中下载得到.3/47mybatis实战教程(mybatisinaction)之一:开发环境搭建mybatis的开发环境搭建,选择:eclipsej2ee版本,mysql5.1,jdk1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。首先建立一个名字为MyBaits的dynamicwebproject1.现阶段,你可以直接建立java工程,但一般都是开发web项目,这个系列教程最后也是web的,所以一开始就建立web工程。2.将mybatis-3.2.0-SNAPSHOT.jar,mysql-connector-java-5.1.22-bin.jar拷贝到web工程的lib目录.3.创建mysql测试数据库和用户表,注意,这里采用的是utf-8编码创建用户表,并插入一条测试数据程序代码CreateTABLE`user`(`id`int(11)NOTNULLAUTO_INCREMENT,`userName`varchar(50)DEFAULTNULL,`userAge`int(11)DEFAULTNULL,`userAddress`varchar(200)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8;InsertINTO`user`VALUES('1','summer','100','shanghai,pudong');到此为止,前期准备工作就完成了。下面开始真正配置mybatis项目了。1.在MyBatis里面创建两个源码目录,分别为src_user,test_src,用如下方式建立,鼠标右键点击JavaResource.4/472.设置mybatis配置文件:Configuration.xml,在src_user目录下建立此文件,内容如下:程序代码?xmlversion=1.0encoding=UTF-8?!DOCTYPEconfigurationPUBLIC-//mybatis.org//DTDConfig3.0//EN=Usertype=com.yihaomen.mybatis.model.User//typeAliasesenvironmentsdefault=developmentenvironmentid=developmenttransactionManagertype=JDBC/dataSourcetype=POOLEDpropertyname=drivervalue=com.mysql.jdbc.Driver/propertyname=urlvalue=jdbc:mysql://127.0.0.1:3306/mybatis/propertyname=usernamevalue=root/propertyname=passwordvalue=password//dataSource/environment/environmentsmappersmapperresource=com/yihaomen/mybatis/model/User.xml//mappers/configuration3.建立与数据库对应的javaclass,以及映射文件.在src_user下建立package:com.yihaomen.mybatis.model,并在这个package下建立User类:程序代码packagecom.yihaomen.mybatis.model;5/47publicclassUser{privateintid;privateStringuserName;privateStringuserAge;privateStringuserAddress;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}publicStringgetUserAge(){returnuserAge;}publicvoidsetUserAge(StringuserAge){this.userAge=userAge;}publicStringgetUserAddress(){returnuserAddress;}publicvoidsetUserAddress(StringuserAddress){this.userAddress=userAddress;}}同时建立这个User的映射文件User.xml:程序代码?xmlversion=1.0encoding=UTF-8?!DOCTYPEmapperPUBLIC-//mybatis.org//DTDMapper3.0//EN=com.yihaomen.mybatis.models.UserMapperselectid=selectUserByIDparameterType=intresultType=User6/47select*from`user`whereid=#{id}/select/mapper下面对这几个配置文件解释下:1.Configuration.xml是mybatis用来建立sessionFactory用的,里面主要包含了数据库连接相关东西,还有java类所对应的别名,比如typeAliasalias=Usertype=com.yihaomen.mybatis.model.User/这个别名非常重要,你在具体的类的映射中,比如User.xml中resultType就是对应这里的。要保持一致,当然这里的resultType还有另外单独的定义方式,后面再说。2.Configuration.xml里面的mapperresource=com/yihaomen/mybatis/model/User.xml/是包含要映射的类的xml配置文件。3.在User.xml文件里面主要是定义各种SQL语句,以及这些语句的参数,以及要返回的类型等.开始测试在test_src源码目录下建立com.yihaomen.test这个package,并建立测试类Test:程序代码packagecom.yihaomen.test;importjava.io.Reader;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importcom.yihaomen.mybatis.model.User;publicclassTest{privatestaticSqlSessionFactorysqlSessionFactory;privatestaticReaderreader;static{try{reader=Resources.getResourceAsReader(Configuration.xml);sqlSessionFactory=newSqlSessionFactoryBuilder().build(reader);}catch(Exceptione){e.printStackTrace();}}7/47publicstaticSqlSessionFactorygetSession(){returnsqlSessionFactory;}publicstaticvoidmain(String[]args){SqlSessionsession=sqlSessionFactory.openSession();try{Useruser=(User)session.selectOne(com.yihaomen.mybatis.models.Us