Mybatis3.1实战1、前言.......................................................................................................................................22、什么是mybatis.....................................................................................................................23、Mybatis入门实例.................................................................................................................24、Mybatis中的增、删、改、查.............................................................................................85、Mybatis新特性介绍...........................................................................................................106、mybatis-config.xml中的元素介绍.....................................................................................117、Mapper配置文件中的用法...............................................................................................188、Mybatis参数传递...............................................................................................................209、基于注解的sql语句..........................................................................................................2110、动态sql语句..................................................................................................................2211、mybatis中的一对多、一对一、多对多.......................................................................2412、自定义类型处理器.........................................................................................................2813、Mybatis缓存的一点说明...............................................................................................3114、Spring3.1+springmvc+mybatis3.1集成..........................................................................31备注................................................................................................................................................40Like模糊查询.........................................................................................................................40排序.........................................................................................................................................40if元素中的条件语句..............................................................................................................411、前言随着开发团队转投GoogleCode旗下,ibatis3.x正式更名为Mybatis。相信很多朋友以前看过ibatis2.x,对ibatis2.x也比较熟悉,随着技术的发展,我们必须跟得上技术发展的步伐,不能永远停留在原来的技术上而不做进一步学习。由于在我的一个新项目中采用了mybatis,为此我发了几天来学习了mybatis,相对hibernate来说,本人感觉mybatis相对来说更加简单,特别是熟悉sql语句的朋友们,你在采用mybatis时,你会觉得跟传统的jdbc方式来操作数据库没什么差别,只是mybatis帮你做了很多原来你在用jdbc来实现时的很多工作。我们来看看mybatis包含了哪些新特性。Mybatis实现了接口绑定,使用更加方便对象关系映射的改进,效率更高MyBatis采用功能强大的基于OGNL的表达式来消除其他元素。在本学习教程中,全方位介绍了mybatis中的各种特性,里面的实例都是采用比较简单的实例来实现,对于有些没有介绍到的特性,大家可以参考官方文档。本教程采用的是mybatis最新的版本mybatis3.1,并结合了maven来写这个教程,所以大家需要对maven有所了解。2、什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(PlanOldJavaObjects,普通的Java对象)映射成数据库中的记录。3、Mybatis入门实例在maven中加入mybatis、mysql、junit的依赖包:dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.10/versionscopetest/scope/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.1.1/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.21/version/dependencydependencygroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactIdversion1.1.1/version/dependencydependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version/dependency创建数据库Createtablestudent(idintprimarykeyautoincrement,ageint,namevarchar(23));在mysql数据中创建student表。配置SqlmapConfiguration.xml,在src目录下面的resources目录下面创建此文件,内容如下:configuration!--引入外部数据库配置文件--propertiesresource=database.properties/!--类型别名是为Java类型命名一个短的名字。它只和XML配置有关,只用来减少类完全限定名的多余部分。例如:使用这个配置,“Student”可以任意用来替代“com.marcle.domain.Student”所使用的地方。对于普通的Java类型,有许多内建的类型别名。它们都是大小写不敏感的,由于重载的名字,要注意原生类型的特殊处理。--typeAliasestypeAliastype=com.pango.mybatis.entity.Studentalias=Student/typeAliastype=com.pango.mybatis.entity.Statusalias=Status//typeAliases!--environments下用于配置不同数据库环境--environmentsdefault=developmentenvironmentid=development!--在MyBatis中有两种事务管理器类型(也就是type=”[JDBC|MANAGED]”):JDBC–这个配置直接简单使用了JDBC的提交和回滚设置。它依赖于从数据源得到的连接来管理事务范围。MANAGED–这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让容器来管理事务的整个生命周期(比如Spring或JEE应用服务器的上下文)。默认情况下它会关闭连接。然而一些容器并不希望这样,因此如果你需要从连接中停止它,将closeConnection属性设置为false--transactionManagertype=JDBC/!--数据源的配置dataSource元素使用基本的JDBC数据源接口来配置JDBC连接对象的资源。许多MyBatis的应用程序将会按示例中的例子来配置数据源。然而它并不是必须的。要知道为了方便使用延迟加载,数据源才是必须的有三种内建的数据源类型UNPOOLED–这个数据源的实现是每次被请求时简单打开和关闭连接。它有一点慢,这是对简单应用程序的一个很好的选择,因为它不需要及时的可用连接。不同的数据库对这个的表现也是不一样的,所以对某些数据库来说配置数据源并不重要,这个配置也是闲置的POOLED–这是JDB法C连接对象的数据源连接池的实现,用来避免创建新的连接实例时必要的初始连接和认证时间。这是一种当前Web应用程序用来快速响应请求很流行的方JNDI–这个数据源的实现是为了使用如Spring或应用服务器这类的容器,容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用--dataSourcetype=POOLEDpropertyname=drivervalue=${database.driver}/propertyname=urlvalue=${database.url}/propertyname=usernamevalue=${database.us