[size=large;]什么是Mybatis: [/size]
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
[size=large;]快速入门:[/size]
添加jar包:mybatis-3.2.8.jar,mysql数据库驱动包:mysql-connector-java-5.1.7-bin.jar
[size=large;]创建数据库:[/size]
create database mybatis;
use mybatis;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
INSERT INTO users(NAME, age) VALUES('lihua', 20);
INSERT INTO users(NAME, age) VALUES('xiaoming', 19);
[size=large;]从 XML 中构建 SqlSessionFactory:[/size]
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。SqlSessionFactoryBuilder 可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。
从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。但是也可以使用任意的 InputStream 实例,包括字符串形式或 URL 形式的文件路径来配置。MyBatis 包含一个叫 Resources 的工具类,它包含一些静态方法,可使从 classpath 或其他位置加载资源文件更容易。
[size=large;](1)创建MybatisConfig.xml:[/size]
[size=large;](2)创建User类:[/size]package com.mybatis.po;
public class User {
private int id;
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public User(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
[size=large;](3)创建操作数据库users表的sql映射文件userMapper.xml:[/size]
select * from users where id=#{id}
[size=large;](4)创建测试testUser类:[/size]package springmvcMybatis;
import java.io.IOException;
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 com.mybatis.po.User;
public class TestUser {
public static void main(String[] args) throws IOException {
String resource = "MybatisConfig.xml";
//加载mybatis的配置文件(它也加载关联的映射文件)
Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
//映射sql的标识字符串
String statement = "com.mybatis.po.UserMapper"+".getUser";
//执行查询返回一个唯一user对象的sql
User user = session.selectOne(statement, 1);
System.out.println(user);
}
}
[size=large;]输出结果:[/size]User [id=1, name=lihua, age=20]
SqlSessionFactoryBuilder
这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。因此 SqlSessionFactoryBuilder 实例的最佳范围是方法范围(也就是本地方法变量)。你可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但是最好还是不要让其一直存在以保证所有的 XML 解析资源开放给更重要的事情。
[size=large;]SqlSessionFactory[/size]
SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由对它进行清除或重建。使用 SqlSessionFactory 的最佳实践是在应用运行期间不要重复创建多次,多次重建 SqlSessionFactory 被视为一种代码“坏味道(bad smell)”。因此 SqlSessionFactory 的最佳范围是应用范围。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。
[size=large;]SqlSession[/size]
每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的范围是请求或方法范围。绝对不能将 SqlSession 实例的引用放在一个类的静态域,甚至一个类的实例域也不行。也绝不能将 SqlSession 实例的引用放在任何类型的管理范围中,比如 Serlvet 架构中的 HttpSession。如果你现在正在使用一种 Web 框架,要考虑 SqlSession 放在一个和 HTTP 请求对象相似的范围中。换句话说,每次收到的 HTTP 请求,就可以打开一个 SqlSession;返回一个响应,就关闭它。这个关闭操作是很重要的,你应该把这个关闭操作放到 finally 块中以确保每次都能执行关闭。下面的示例就是一个确保 SqlSession 关闭的标准模式:
SqlSession session = sqlSessionFactory.openSession();
try {
// do work
} finally {
session.close();
}
你应该在你的所有的代码中一致性地使用这种模式来保证所有数据库资源都能被正确地关闭。
参照资料地址:http://mybatis.github.io/mybatis-3/zh/
分享到:
相关推荐
MyBatis 快速入门程序
关于学习mybatis的视频和书都是很多的,如果要快速入门肯定要学一些点,这个文档我觉得还是能在一天内帮助快速入门的
一、MyBatis简介 二、MyBatis-HelloWorld 三、MyBatis-全局配置文件 四、MyBatis-映射文件 五、MyBatis-动态SQL 六、MyBatis-缓存机制 七、MyBatis-Spring整合 八、MyBatis-逆向工程 九、MyBatis-工作原理
这篇“MyBatis入门到精通”的学习资料是针对初学者设计的,旨在帮助新手快速掌握MyBatis的基本用法和高级特性。 1. **MyBatis简介** MyBatis是由Clinton Begin创建的开源项目,它是一个基于Java的持久层框架,消除...
在快速入门MyBatis的过程中,了解其核心概念至关重要。首先,`SqlSessionFactoryBuilder`是创建`SqlSessionFactory`的构建者,它是整个MyBatis的核心。通过读取配置文件(XML或Java注解形式),它能够构建出`...
Spring Boot是目前最流行的微服务框架,Spring Boot让我们的Spring应用变的更轻量化...比如:你可以仅仅依靠一个Java类来运行一个Spring引用。你也可以打包你的应用为jar并通过使用java -jar来运行你的Spring Web应用。
要快速入门MyBatis,首先需要了解以下步骤: 1. **添加依赖**:在项目中引入MyBatis的核心库mybatis-3.1.1.jar以及MySQL驱动包mysql-connector-java-5.1.7-bin.jar。 2. **创建数据库与表**:创建名为mybatis的...
这个经典入门实例旨在为初学者提供一个快速理解MyBatis基本概念和操作方式的平台。通过学习这个实例,你可以掌握如何在实际项目中使用MyBatis进行数据操作。 首先,我们需要了解MyBatis的核心概念。MyBatis的核心是...
总的来说,"MyBatis简单入门实例"是一个全面的教程,覆盖了MyBatis的基础操作,让读者能够快速上手并开始自己的MyBatis项目。通过实际操作和学习提供的"LearnIBatis"资源,读者将能够更好地理解和应用MyBatis框架。
首先把db文件夹下的数据库文件导入到MySQL数据库中,修改mybatis-cfg.xml文件中的username和password,运行即可(如果是其他数据库,则需要修改driver和url,还需要添加对应的数据库jar包)
《Spring+MyBatis+MySQL实战入门》系列教程旨在帮助初学者快速掌握这三大核心技术在实际项目中的应用。本文将重点讲解MyBatis操作入门的相关知识,通过源码解析,帮助你深入理解MyBatis的工作原理及使用方法。 1. ...
关于mybatis-plus的更多介绍及特性,可以参考本文档,详细的介绍了从入门到提高的一个过程,感兴趣的可以下载了解。 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增 强不做改变,为...
MyBatis是一个强大的Java持久层框架,它主要处理SQL查询、存储过程以及复杂的对象映射。这个框架的主要优点是它可以避免大量的JDBC代码手动编写,同时也简化了结果集的处理。下面我们将深入探讨MyBatis的基本概念和...
在提供的压缩包文件 "spring mvc+mybatisѧϰ" 和 "spring mvc+mybatis学习" 中,可能包含了相关的教程、示例代码和练习,帮助初学者快速上手这两个框架。通过学习这些资源,你可以更好地理解它们的工作原理,以及...
本项目是一个入门级别的实例,旨在帮助初学者理解和实践这三种技术的集成。 首先,我们来详细了解一下Spring框架。Spring是一个开源的Java平台,它为开发企业级应用提供了全面的框架支持。Spring的核心特性可以促进...
本教程以IntelliJ IDEA和Maven为开发环境,指导初学者快速入门Mybatis。 **一、Mybatis简介** Mybatis是由Google Code维护,现由GitHub托管的开源项目,它解决了传统Java DAO编程的繁琐工作,通过XML或注解的方式将...
在本入门实例中,我们将探讨如何使用MyBatis 3.0.2版本进行基本的数据库操作。这个实例适合初学者,将帮助你快速理解和掌握MyBatis的基本用法。 1. **MyBatis安装与配置** 在开始之前,确保你已经安装了JDK和Maven...
"Mybatis快速入门(二).docx"可能继续介绍Mybatis的基本操作,如增删改查(CRUD)以及动态SQL。动态SQL是Mybatis的一大特色,它允许在XML映射文件中使用条件语句,根据不同的参数动态生成SQL,极大地提高了代码的...
在这个快速入门教程中,我们将逐步了解如何创建第一个 MyBatis 程序。 1. **资源目录结构**: 在 MyBatis 项目中,`resources` 目录是存放资源文件的地方,如配置文件、映射器(Mapper)XML 文件等。在 Maven 项目...