JAVA持久层框架——MyBatis01

   MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。

   一.MyBatis的优点:

1.简化JDBC编程

   MyBatis和Hibernate都是优秀的持久层框架,发明它们的目的之一就是简化jdbc编程。这些框架封装了JDBC操作的细节过程,大大简化了开发,让开发人员更好的集中精力实现业务逻辑。

2.易于SQL优化

     Hibernate完全的O/R映射使得我们没法根据实际业务优化SQL语句,所以无法满足特殊的业务需求和高性能业务,MyBatis正好弥补了这个空白。

确切点说MyBatis最重要的就是写好SQL,包括写好SQL语句和写好SQL映射

·SQL语句就是标准的SQL语句(可以在当前选用的数据库产品下,根据需求使用该产品下的SQL函数

·SQL映射包括:参数映射和返回值映射(返回值只针对查询,增删改是没有返回值的

●【参数映射】(也叫做【输入映射】)

MyBatisjava对象传入给SQL语句参数的过程。

●【返回值映射】(也叫做【输出映射】)

MyBatis将SQL查询的结果集处理成一个java对象并返回给java程序的过程。

●【java对象】

如果传递单个参数,变量可以是简单类型:int、long、float、String、Integer、Long、Boolean、Float等。

如果传递多个参数,必须使用实体类封装,封装后再传给sql。有一个名词叫pojo(Plain Ordinary Java Object),里面有许多属性以及它们的getter/setter方法。

实体类==Java bean==pojo,它们没有区别,就是换种叫法而已。

SQL语句以及映射写在xml或注解中。

二.MyBatis访问数据库的核心构成

 

从这个结构图要明确知道MyBatis访问数据库的核心构成包括三个核心类和两种配置文件。

三个核心类:SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession;

两种配置文件:MyBatis核心配置文件(一个)、MyBatis映射文件(多个)。

了解了核心构成,下面主要学习的就是SQL的映射规范了,也就是在MyBatis中如何写SQL。只要按照规范写SQL,MyBatis就能自动的帮助我们完成具体的映射工作。

三.MyBatis小demo环境搭建

第一步:创建数据库表

第二步:创建工程

创建一个普通java工程。

第三步:导入jar包

这里我们用到【MyBatis的jar包】和【mysql的jar包】。

第四步:框架的配置文件

1.核心配置文件

在config下创建MyBatisConfig.xml(也有人叫SqlMapConfig.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>
	<!-- 数据库环境的配置(临时配置) -->
	<!-- 
		environments:表示多个数据库环境的配置标签
		default:当前默认使用的数据库环境
	 -->
	<environments default="dev">
		<!-- 开发数据库环境的配置 -->
		<!-- 
			environment:表示一个数据库环境配置的标签
			id:表示唯一标识一个数据库环境
		 -->
		<environment id="dev">
			<!-- 事务管理的配置 -->
			<!-- 
				transactionManager:表示事务管理的配置标签
				type:表示事务管理的类型,由于MyBatis是对JDBC的封装,所以通常使用JDBC的事务
			 -->
			<transactionManager type="JDBC"/>
			<!-- 数据源配置:driver, url, username, password -->
			<!-- 
				dataSource:表示数据源的配置标签
				type:表示数据源的类型,标识是否支持数据库连接池
					POOLED:表示支持数据库连接池的数据源
					UNPOOLED:表示不支持数据库连接池的数据源
			 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/>
				<property name="username" value="root"/>
				<property name="password" value="123"/>
			</dataSource>
		</environment>
	</environments>
<!-- 配置映射文件 -->
	<mappers>
		<!-- 通过映射文件在编译后类目录下的相对路径加载映射文件
		resource:用来指定映射文件的相对路径
		 -->
		<mapper resource="cn/itcast/mapper/UserMapper.xml" />
	</mappers>
</configuration>

这个文件就是MyBatis的核心配置文件,里面主要配置连接数据库的数据源、事务管理以及MyBatis的映射文件有哪些。

这里大概知道里面配置的是数据库信息就可以了,因为到实际项目中框架整合后就不用这么配置了,所以它的实用价值不大,这里只是临时这么用一下。

2.SQL映射

<?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">
<!-- namespace:是一个SQL映射文件的唯一标识,不能重名 -->
<mapper namespace="user">
	<!-- SQL映射 -->
</mapper>

第六步:测试环境

public class MyTest {
	@Test
	public void envTest() throws Exception {
		SqlSession sqlSession = null;
		try {
			// 1. 读取配置文件(MyBatis有专门读取配置文件的工具类Resources)
			InputStream inputStream = Resources.getResourceAsStream("MyBatisCofig.xml");
			// 2. 根据主配置文件创建会话工厂
			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			// 3. 根据会话工厂创建会话对象
			// 业务层通过SqlSession对象来访问数据库进行CRUD操作,每个执行方法中会话对象要私有
			sqlSession = sqlSessionFactory.openSession();
			System.out.println(sqlSession);
		} catch(Exception e) {
			e.printStackTrace();
			throw e;
		} finally {
			// 关闭会话
			sqlSession.close();
		}
	}
}

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_41933719/article/details/83414194