MyBatis 作为一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。它免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。还可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。接下来为大家带来在日常应用的过程中的一些小技巧。
既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升技能了。 MyBatis 的 Java API 就是你收获你所做的努力的地方。正如你即将看到的,和 JDBC 相比, MyBatis 很大程度简化了你的代码而且保持简洁,很容易理解和维护。MyBatis 3 已经引入 了很多重要的改进来使得 SQL 映射更加优秀。
MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生 Map 使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。课程入口更多参考材料:《Mybatis 实战教程》
MyBatis没有提供日志的实现类,需要接入第三方的日志组件,但第三方日志组件都有各自的Log级别,且各不相同,MyBatis统一提供了 trace、debug、warn、error 四个级别;
MyBatis 完整入门与配置(二)包括XML 映射文件、动态 SQL、Java API、SQL 语句构建器、日志。
前面的系列 Mybatis 文章,已经基本讲到了 Mybatis 的操作,但都是基于 mapper 隐射操作的,在 Mybatis 3 中这个 mapper 接口貌似充当了以前在 ibatis 2 中的 DAO 层的作用。但事实上,如果有这个 mapper 接口不能完成的工作,或者需要更复杂的扩展的时候,你就需要自己的 DAO 层. 事实上 Mybatis 3 也是支持 DAO 层设计的,类似于 ibatis 2 。下面介绍下。
Mybatis 应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量. 所以 Mybatis 官方也推出了一个 Mybatis 代码生成工具的 jar 包.
Mybatis 的动态 SQL 语句是基于 OGNL 表达式的。可以方便的在 SQL 语句中实现某些逻辑. 总体说来 Mybatis 动态 SQL 语句主要有以下几类:if 语句 (简单的条件判断)choose (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中的choose 很类似.
上一篇文章里已经讲到了 Mybatis与 Spring MVC 的集成,并且做了一个列表展示,显示出所有 article 列表,但没有用到分页,在实际的项目中,分页是肯定需要的。而且是物理分页,不是内存分页。对于物理分页方案,不同的数据库,有不同的实现方法,对于 Mysql 来说 就是利用 limit offset,pagesize 方式来实现的。
前面几篇文章已经讲到了 Mybatis 与 Mpring 的集成。但这个时候,所有的工程还不是 Web 工程,虽然我一直是创建的 Web 工程。今天将直接用 Mybatis与Spring mvc 的方式集成起来,源码在本文结尾处下载。主要有以下几个方面的配置:web.xml 配置 spring dispatchservlet ,比如为:mvc-dispatchermvc-dispatcher-servlet.xml 文件配置spring applicationContext.
在这一系列文章中,前面讲到纯粹用 Mybatis 连接数据库,然后 进行增删改查,以及多表联合查询的的例子,但实际项目中,通常会用 Spring 这个沾合剂来管理 datasource 等。充分利用 Spring 基于接口的编程,以及aop ,ioc 带来的方便。用 Spring 来管理 Mybatis 与管理 Hibernate 有很多类似的地方。今天的重点就是数据源管理以及 bean 的配置。
有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如最常见到的多对一,一对多等。这些查询是如何处理的呢,这一讲就讲这个问题。我们首先创建一个 Article 这个表,并初始化数据。Drop TABLE IF EXISTS `article`;
前面已经讲到用接口的方式编程。这种方式,要注意的一个地方就是。在 User.xml 的配置文件中,mapper namespace="com.yihaomen.mybatis.inter.IUserOperation" ,命名空间非常重要,不能有错,必须与我们定义的 package 和 接口一致。
前面一章,已经搭建好了 Eclipse,Mybatis,MySql 的环境,并且实现了一个简单的查询。请注意,这种方式是用 SqlSession 实例来直接执行已映射的SQL语句:session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID", 1)其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如 IUserOperation.
Mybatis 的开发环境搭建,选择: Eclipse J2EE 版本,MySql 5.1 ,JDK 1.7,Mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。首先建立一个名字为 MyBaits 的 dynamic web project现阶段,你可以直接建立 java 工程,但一般都是开发 Web 项目,这个系列教程最后也是 Web 的,所以一开始就建立 Web 工程。将 Mybatis-3.2.0-SNAPSHOT.
问题Java程序员面对的最痛苦的事情之一就是在Java代码中嵌入SQL语句。这么来做通常是由于SQL语句需要动态来生成-否则可以将它们放到外部文件或者存储过程中。正如你已经看到的那样,MyBatis在它的XML映射特性中有一个强大的动态SQL生成方案。但有时在Java代码内部创建SQL语句也是必要的。
MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):cache – 给定命名空间的缓存配置。
MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息。properties这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递。例如:<properties resource="org/mybatis/example/config.properties"> <property name="username" value="dev_user"/> <
Mybatis中Mapper接口的工作原理,对应的关系如下:接口的全限名,就是xml映射文件中的 "namespace" 的值。
关注时代Java