MyBatis --快速入门

什么是MyBatis?

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC代码和参数的手工设置以及结果集的检索。 MyBatis 使用简单的XML或注解用于配置和原始映射,将接口和 Java 的 POJOs( Plan OldJava Objects,普通的 Java对象)映射成数据库中的记录。

每一个mybatis应用都以一个SqlSessionFactory对象的实例为核心。SqlSessionFactory可以通过SqlSessionFactoryBuilder对象来获得,SqlSessionFactoryBuilder对象可以从XML配置文件,或从Configuration类的实例中构建SqlSessionFactory对象。

从XML中创建SqlSessionFactory

  XML 配置文件包含对MyBatis系统的核心设置,包含获取数据库连接实例的数据源和决定事务范围和控制的事务管理器。

实例:

<?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>
	<!-- 配置环境变量 -->
	<environments default="development">
	<!-- environment元素体中包含对事务管理和连接池的环境配置 -->
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
	<!-- 配置mappers -->
	<!-- mappers元素是包含所有mapper(映射器)的列表,这些mapper的XML文件包含SQL代码和映射定义信息 -->
	<mappers>
		<mapper resource="org/mybatis/example/BlogMapper.xml" />
	</mappers>
</configuration>

SqlSessionFactory对象由SqlSessionFactoryBuilder创建。

它的主要功能是创建SqlSession对象,和SqlSessionFactoryBuilder对象一样,没有必要每次访问Mybatis就创建一次SqlSessionFactory,通常的做法是创建一个全局的对象就可以了。

实例:

private static SqlSessionFactoryBuilder sqlSessionFactoryBuilder;  
private static SqlSessionFactory sqlSessionFactory;  
private static void init() throws IOException {  
    String resource = "mybatis-config.xml";  
    Reader reader = Resources.getResourceAsReader(resource);  
    sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();  
    sqlSessionFactory = sqlSessionFactoryBuilder.build(reader);  

}

SqlSession

SqlSession对象的主要功能是完成一次数据库的访问和结果的映射。每个线程都应该有它自己的SqlSession 实例。 SqlSession 的实例不能被共享,也是线程不安全的。因此最佳的范围是请求或方法范围。绝对不能将SqlSession 实例的引用放在一个类的静态字段甚至是实例字段中。也绝不能将SqlSession 实例的引用放在任何类型的管理范围中,比如Serlvet
架构中的 HttpSession。

关闭 Session很重要,你应该确保使用 finally 块来关闭它。下面的示例就是一个确保 SqlSession 关闭的基本模式:

SqlSession session = sqlSessionFactory.openSession();
try {
      BlogMapper mapper = session.getMapper(BlogMapper.class);
      Blog blog = mapper.selectBlog(101);
} finally {
      session.close();
}

Mapper实例

通过 SqlSession和 Mapper 对象到底执行了什么操作?(已映射的SQL语句是关键)

我们先来看看:

语句是可以通过 XML 或注解定义的,我们先看看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="org.mybatis.example.BlogMapper">
		<select id="selectBlog" parameterType="int" resultType="Blog">
			select * from Blog where id = #{id}
		</select>

        </mapper>
	package org.mybatis.example;
	//接口
	public interface BlogMapper {
		Blog selectBlog(int id);
	}

	操作执行
	SqlSession session = sqlSessionFactory.openSession();
	try {
		//getMapper 获取mapper对象
		BlogMapper mapper = session.getMapper(BlogMapper.class);
		Blog blog = mapper.selectBlog(101);
	} finally {
		session.close();
	}

再来看看如何使用java注解来替换写映射语句的xml

使用注解要更加清晰,但是对于复杂的sql来说就会很乱,对于复杂的sql建议使用xml

	package org.mybatis.example;
	public interface BlogMapper {
		@Select("SELECT * FROM blog WHERE id = #{id}")
		Blog selectBlog(int id);
	}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 15:51:18

MyBatis --快速入门的相关文章

MyBatis学习总结(一)——MyBatis快速入门

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 二.mybatis快速入门 2.1.准备开发环境 1.创建测试项目,普通java项目或者是JavaWeb项目均可,如下图所示: 2.添加相应的jar包 [mybat

尚硅谷-mybatis快速入门

1. Mybatis介绍(ibatis) MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. JDBC--->dbutils(自动封装)--->MyBatis--->Hibernate 2. mybatis快速入

MyBatis学习总结(一)——MyBatis快速入门(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(一)--MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 二.mybatis快速入门 2.1.准备

MyBatis学习总结——MyBatis快速入门

MyBatis学习总结(一)--MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 二.Mybatis入门 1. 用到的相关包      {Mybatis} mybat

【转】MyBatis学习总结(一)——MyBatis快速入门

[转]MyBatis学习总结(一)——MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 二.mybatis快速入门 2.1.准备开发环境 1.创建测试项目,普通jav

MyBatis学习笔记(一)——MyBatis快速入门

一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 二.mybatis快速入门 2.1.准备开发环境 1.创建测试项目,普通java项目或者是JavaWeb项目均可,如下图所示: 2.添加相应

mybatis介绍和mybatis快速入门

1.mybatis介绍 mybatis是支持普通sql查询,存储过程和该机映射的持久层(把java对象存储到数据库中)框架.几乎消除jdbc代码和手动设置参数以及对结果集的检索封装.mybatis可以使用映射文件xml,接口dao来操作实体类bean. 2.mybatis快速入门 1.建立数据库表users create database mybatis; use mybatis; CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAM

MyBatis快速入门经典

简介 MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis.MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java

mybatis快速入门(六)

前面mybatis的入门程序基本上都写完了,就看大家的灵活运用了,今天来吧前面的整合一下封装一个公共的BaseDao 只需要把前面的改造下然后创建一个BaseDao的接口,其它的继承BaseDao接口就可以了就可以了,这个是最简单了,不废话了直接贴代码了 1.首先创建一个BaseDao package cn.my.dao; import java.util.List; /** * 将公用方法提取出来 * @author Administrator * * @param <T> */ publi

【Mybatis】MyBatis快速入门

Mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录. 中文官网地址:http://www.mybatis.org/mybatis-3/zh/index.html GitHub地