09年的时候工作中用过ibatis,虽然说使用过,但也没有深入的全面的学习。最近在去ibatis的官网看下,现在ibatis已经改名为Mybatis,下载路径已经改变(http://code.google.com/p/mybatis/wiki/Downloads?tm=2)
现在比较空闲,借此机会好好的根据已经的ibatis了解来学习下Mybatis
1、下载Myibatis
下载地址(http://code.google.com/p/mybatis/downloads/list?can=3&q=Product%3DMyBatis)
下载版本:mybatis-3.1.1-bundle.zip
新手学习的时候最好下载官方的用户指南,当然英文不很好的童鞋可以找下中文翻译的版本。
2、Mysql建库表
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`NAME` varchar(100) DEFAULT NULL,
`SEX` varchar(10) DEFAULT NULL,
`AGE` int(2) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
3、Myeclipse新建工程
4、环境搭建
(1)、mybaits的XML环境配置文件
路径:src/config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 类别名定义 -->
<typeAliases>
<typeAlias type="com.mybatis.po.Student" alias="Student"/>
</typeAliases>
<!-- 配置Mybatis的环境,事务及数据源等等 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 指定映射文件或者映射类 -->
<mappers>
<mapper resource="com/mybatis/persistence/StudentMapper.xml" />
</mappers>
</configuration>
(2)、创建数据库表对应的模型PO类
package com.mybatis.po;
import java.io.Serializable;
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String name;
private String sex;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "ID:"+this.getId()+",姓名:"+this.getName()+",性别:"+this.getSex()+",年龄:"+this.getAge();
}
}
(3)DAO层接口
package com.mybatis.persistence;
import com.mybatis.po.Student;
public interface StudentMapper {
/**
* 根据ID查询
* 创 建 人: XX
* 创建时间: 2012-11-1 上午09:51:22
* @param id
* @return
* @see [类、类#方法、类#成员]
*/
public Student getStudentById(Integer id);
}
(4)映射文件(com/mybatis/persistence/StudentMapper.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.persistence.StudentMapper">
<select id="getStudentById" parameterType="int" resultType="Student">
select * from student where id = #{id}
</select>
</mapper>
ok到这儿一个最简单的环境搭建好了。
5、我们来测试一下
在student表中手工插入一条记录,我们来查询一下
package com.mybatis.test;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.mybatis.persistence.StudentMapper;
import com.mybatis.po.Student;
public class TestStudentMapper {
private SqlSession session=null;
@Before
public void setUp() throws Exception {
String resource = "config.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
session = sqlMapper.openSession();
}
@Test
public void testSelectStudent(){
StudentMapper mapper = session.getMapper(StudentMapper.class);
Student student =mapper.getStudentById(1);
System.out.println(student.toString());
}
}
好了,测试正常
6、MyBatis的配置文件解析
(1)、配置文件的基本结构
configuration —— 根元素
properties —— 定义配置外在化
settings —— 一些全局性的配置
typeAliases —— 为一些类定义别名
typeHandlers —— 定义类型处理,也就是定义java类型与数据库中的数据类型之间的转换关系
objectFactory
plugins —— Mybatis的插件,插件可以修改Mybatis内部的运行规则
environments —— 配置Mybatis的环境
environment
transactionManager —— 事务管理器
dataSource —— 数据源
databaseIdProvider
mappers —— 指定映射文件或映射类
(2)、Settings
这些是极其重要的调整,它们会修改MyBatis在运行时的行为方式。下面这个表格描述了设置信息,它们的含义和默认值。
设置参数 |
描述 |
有效值
|
默认值 |
cacheEnabled
|
这个配置使全局的映射器启用或禁用缓存。
|
true | false
|
true
|
lazyLoadingEnabled
|
全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。
|
true | false
|
true
|
aggressiveLazyLoading
|
当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。
|
true | false
|
true
|
multipleResultSetsEnabled
|
允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动)。
|
true | false
|
true
|
useColumnLabel
|
使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动。
|
true | false
|
true
|
useGeneratedKeys
|
允许JDBC支持生成的键。需要适合的驱动。如果设置为true则这个设置强制生成的键被使用,
尽管一些驱动拒绝兼容但仍然有效(比如Derby)。
|
true | false
|
false
|
autoMappingBehavior
|
指定MyBatis如何自动映射列到字段/属性。PARTIAL只会自动映射简单,没有嵌套的结果。FULL会自动映射任意复杂的结果(嵌套的或其他情况)。
|
NONE,
PARTIAL,
FULL
|
PARTIAL
|
defaultExecutorType
|
配置默认的执行器。SIMPLE执行器没有什么特别之处。REUSE执行器重用预处理语句。BATCH执行器重用语句和批量更新
|
SIMPLE,
REUSE,
BATCH
|
SIMPLE
|
defaultStatementTimeout
|
设置超时时间,它决定驱动等待一个数据库响应的时间。
|
Any positive integer
|
Not Set(null)
|
(2)、typeAliases
类型别名是为Java类型命名一个短的名字。它只和XML配置有关,只用来减少类完全限定名的多余部分。如:
<!-- 类别名定义 -->
<typeAliases>
<typeAlias type="com.mybatis.po.Student" alias="Student"/>
</typeAliases>
(3)Environments元素
可以配置多个运行环境,但是每个SqlSessionFactory 实例只能选择一个运行环境。
(a)、transactionManager事务管理器
MyBatis 有两种事务管理类型(即type=”[JDBC|MANAGED]”):
JDBC – 这个配置直接简单使用了 JDBC 的提交和回滚设置。 它依赖于从数据源得 到的连接来管理事务范围。
MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让 容器来管理事务的整个生命周期(比如 Spring 或 JEE 应用服务器的上下文) 默认 情况下它会关闭连接。 然而一些容器并不希望这样, 因此如果你需要从连接中停止 它,将 closeConnection 属性设置为 false。例如:
<transactionManager type="MANAGED">
<property name="closeConnection" value="false"/>
</transactionManager>
(b)、dataSource数据源
dataSource 元素使用标准的JDBC 数据源接口来配置JDBC 连接对象源。
MyBatis 内置了三种数据源类型:
UNPOOLED – 这个数据源的实现是每次被请求时简单打开和关闭连接。它有一点慢, 这是对简单应用程序的一个很好的选择, 因为它不需要及时的可用连接。 不同的数据库对这 个的表现也是不一样的, 所以对某些数据库来说配置数据源并不重要, 这个配置也是闲置的。 UNPOOLED 类型的数据源仅仅用来配置以下 5 种属性:
driver – 这是 JDBC 驱动的 Java 类的完全限定名(如果你的驱动包含,它也不是 数据源类)。
url – 这是数据库的 JDBC URL 地址。
username – 登录数据库的用户名。
password – 登录数据库的密码。
defaultTransactionIsolationLevel – 默认的连接事务隔离级别。
作为可选项,你可以传递数据库驱动的属性。要这样做,属性的前缀是以“driver.”开 头的,例如:
driver.encoding=UTF8
这 样 就 会 传 递 以 值 “ UTF8 ” 来 传 递 属 性 “ encoding ”, 它 是 通 过 DriverManager.getConnection(url,driverProperties)方法传递给数据库驱动。
POOLED – 这是 JDBC 连接对象的数据源连接池的实现,用来避免创建新的连接实例 时必要的初始连接和认证时间。这是一种当前 Web 应用程序用来快速响应请求很流行的方 法。
除了上述(UNPOOLED)的属性之外,还有很多属性可以用来配置 POOLED 数据源:
poolMaximumActiveConnections – 在任意时间存在的活动(也就是正在使用)连 接的数量。默认值:10
poolMaximumIdleConnections – 任意时间存在的空闲连接数。
poolMaximumCheckoutTime – 在被强制返回之前,池中连接被检查的时间。默认 值:20000 毫秒(也就是 20 秒)
poolTimeToWait – 这是给连接池一个打印日志状态机会的低层次设置,还有重新 尝试获得连接, 这些情况下往往需要很长时间 为了避免连接池没有配置时静默失 败)。默认值:20000 毫秒(也就是 20 秒)
poolPingQuery – 发送到数据的侦测查询,用来验证连接是否正常工作,并且准备 接受请求。默认是“NO PING QUERY SET” ,这会引起许多数据库驱动连接由一 个错误信息而导致失败。
poolPingEnabled – 这是开启或禁用侦测查询。如果开启,你必须用一个合法的 SQL 语句(最好是很快速的)设置 poolPingQuery 属性。默认值:false。
poolPingConnectionsNotUsedFor – 这是用来配置 poolPingQuery 多次时间被用一次。 这可以被设置匹配标准的数据库连接超时时间, 来避免不必要的侦测。 默认值: 0(也就是所有连接每一时刻都被侦测-但仅仅当 poolPingEnabled 为 true 时适用)。
JNDI – 这个数据源的实现是为了使用如 Spring 或应用服务器这类的容器, 容器可以集 中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。这个数据源配置只需要两个属 性:
initial_context – 这 个 属 性 用 来 从 初 始 上 下 文 中 寻 找 环 境 ( 也 就 是 initialContext.lookup(initial——context) 。这是个可选属性,如果被忽略,那么 data_source 属性将会直接以 initialContext 为背景再次寻找。
data_source – 这是引用数据源实例位置的上下文的路径。它会以由 initial_context 查询返回的环境为背景来查找,如果 initial_context 没有返回结果时,直接以初始 上下文为环境来查找。
和其他数据源配置相似, 它也可以通过名为 “env.” 的前缀直接向初始上下文发送属性。 比如:
env.encoding=UTF8
在初始化之后,这就会以值“UTF8”向初始上下文的构造方法传递名为“encoding” 的属性。
分享到:
相关推荐
本教程将引导你一步步搭建MyBatis的开发环境,为后续的深入学习和实践打下基础。 首先,我们需要了解MyBatis的核心概念。MyBatis是一个轻量级的框架,它不包含任何JDBC模板或实体管理功能,而是专注于SQL映射。通过...
在IT行业中,构建高效、可维护的Web应用是开发者的核心任务之一。SpringBoot因其便捷的配置和快速的启动时间,成为开发Java应用的首选框架。而MyBatis作为一款轻量级的持久层框架,提供了灵活的SQL映射功能,大大...
- 流程审批:OA系统的核心功能之一,可以通过工作流引擎实现,如Activiti或Flowable。 - 通知公告:通过消息推送机制,实现信息的实时通知。 - 表单设计:支持用户自定义表单,满足不同业务需求。 - 数据权限:...
本教程将详细讲解如何搭建MyBatis的开发环境,以便开始愉快的MyBatis编程之旅。 1. **环境需求** 在开始搭建MyBatis环境前,确保已安装以下基础软件: - Java Development Kit (JDK):MyBatis是用Java编写的,...
ASP.NET 搭建 MyBatis 开发环境详解 在.NET开发领域,ASP.NET一直以其高效、稳定的特点受到广大开发者青睐。...希望这篇文章能帮助你避免那些错误引导,顺利搭建起MyBatis的开发环境,开启高效编码之旅。
【标题】:“mybatis 第一天环境的...通过以上步骤,你将能够成功地在第一天就建立起MyBatis的开发环境,开始愉快的MyBatis之旅。同时,不要忘记持续学习和探索,因为源码和工具的熟练掌握将助你在IT行业中更进一步。
1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一,通过DI,我们可以将对象间的依赖关系解耦,使得代码更加灵活,易于测试和维护。 2. **AOP(Aspect Oriented Programming)**:Spring的AOP模块...
【标题】"mybatis 第一天...总之,MyBatis是一个强大而灵活的框架,它的环境搭建虽然简单,但深入了解其原理和使用技巧,将极大地提升我们的开发体验。希望这个详尽的指南能帮助你在第一天就顺利入门MyBatis的开发。
### 基于Maven的Spring+SpringMVC+Mybatis环境搭建详解 #### 一、Maven简介与优势 Maven是一个项目管理和综合工具,主要用于Java项目的构建、依赖管理和项目信息管理。它通过一系列标准化的过程来简化项目的构建...
在IT行业中,构建Web应用程序是常见的任务之一,而Spring、SpringMVC和Mybatis这三大框架的组合(SSM框架)被广泛应用于Java Web开发。本文将深入探讨如何使用这三个框架来搭建一个简单的项目。 首先,Spring框架是...
mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in action之四实现...
### Eclipse+Struts2+Spring+MyBatis环境搭建知识点详解 #### 一、环境准备与文件下载 在搭建Eclipse+Struts2+Spring+MyBatis开发环境之前,首先需要准备相应的软件包。 - **Struts2**: 下载全包`struts-2.3.3-...
SpringMVC、Spring和Mybatis是Java开发中最常用的三大框架,它们共同构成了企业级Web应用的基础架构。在本文中,我们将深入探讨这三个框架的核心概念、...掌握这三个框架的集成和使用,是Java开发者的必备技能之一。
Mybatis环境搭建及文件配置过程解析是Mybatis框架的核心组件之一,它提供了一个灵活的方式来访问和操作数据库。在本文中,我们将详细介绍Mybatis环境搭建及文件配置过程解析的知识点。 1. 创建Maven工程并导入坐标 ...
在本项目中,我们主要探讨的是如何利用IntelliJ IDEA(简称Idea)结合Spring Boot框架,集成MySQL数据库和MyBatis持久层框架,来快速搭建一个基础的Web应用程序,并实现简单的数据查询功能。以下是对这个主题的详细...
在"mybatis入门实战之一"中,我们将深入探讨MyBatis的基础知识,包括它的安装配置、基本用法以及如何进行简单的增删改查操作。这个实战教程特别适合初学者,因为它涵盖了开发过程中常用的工具如log日志记录和Maven...
MyBatis 是当前最流行的 Java 持久层框架之一,其通过 XML 配置的方式消除了绝大部分 JDBC 重复代码以及参数的设置,结果集的映射。为了更好地学习和理解 MyBatis 背后的设计思路,作为高级开发人员,有必要深入研究...
随着ibatis的结束,MyBatis作为一个独立项目继续发展,并且成为Apache的顶级项目之一。之后,MyBatis项目被托管到了Google Code下,现在托管于GitHub平台。 #### 二、原生JDBC存在的问题及解决方案 在原生JDBC开发...