Mybatis入门使用详解

很多人初始Mybatis,总是把Mybatis与JDBC搞混,不清楚sql语句写在哪里,不清楚在哪里创建链接,不知道代码怎么写,看了别人的代码,总想着自己去记,去背代码,这往往都是不可取的,不对的。
下面,我将会用最简单的语言,教大家快速上手Mybatis.

1、既然学到了Mybatis,那么就一定学过了JDBC,那我们仔细回想一下,我们是如何使用JDBC与Mybatis连接的。

1、加载驱动程序,使用Class.forName()方法调用来完成,参数是驱动类的名称
.
2、打开数据库连接,首先使用Connection创建连接,然后使用DriverManager建立连接;
.
3、获得Statement对象,这个Statement对象主要是在第四步执行SQL语句的
.
4、执行SQL语句

2、回想完JDBC,就进入正题,Mybatis,我把它分为三个部分,一个是XML配置文件部分,这部分主要与JDBC第1.2步相似,第二部分就是映射文件(mapper)部分,主要与3.4步相似,第三部分就是Java代码部分了

我们来一一分析:
首先,就是我们的XML配置文件,一般都以mybatis-config.xml命名,主要作用,就是把,我们原来JDBC连接数据库需要的的数据源写入了配置文件里面,以及将我们的mapper映射文件注册到配置文件里面(其实还有很多功能,入门主讲这两个),看下面代码:

<?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>

	<properties resource="jdbc.properties"></properties>  使用properties引入外部文件
	
	<environments default="develoment">  默认为开发环境
		<environment id="develoment">
			<transactionManager type="JDBC"></transactionManager>  基于JDBC的事务
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />  我们连接数据库需要的数据源,都写在这里 ${driver} 意思就是,获取properties引入外部文件的内容,这里注意一点properties,都是以键值对的形式去读取的,就这么理解
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
	   <package name="com.mybatis.mapper"/>  注册mapper映射文件,后文会讲为什么要注册,以及mapper的作用
	</mappers>
</configuration>

jdbc.properties文件(主要的数据源都写在这里,然后通过properties以键值对的方式读取这个文件里面的内容 )

driver=com.mysql.jdbc.Driver   driver为key  com.mysql.jdbc.Driver为value
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=123456

第二个就是我们的mapper,映射文件,专门负责写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">

<mapper namespace="com.mybatis.mapper.StudentDaoMapper">  与接口产生映射

	<select id="selectsingleStudent" resultMap="resultMap01">
		SELECT * FROM student
		s JOIN teacher t JOIN positions p ON s.tid = t.tid AND p.id = t.tid
		WHERE s.sid=#{sid}
	</select>
</mapper>

像我们的mapper映射文件呢,主要作用就是用来管理sql语句,以及与接口产生映射,这里就先记住这么多。

3、最后就是我们的代码部分了,我一句句的为解析:

public class MybatisUtils {
	

		public static  SqlSession getSqlSession() throws Exception {
		
		String mybatis_conf ="mybatis-conf.xml";   
		InputStream inputStream = Resources.getResourceAsStream(mybatis_conf);
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session = sessionFactory.openSession(true);
		
		return session;
	}
}

MybatisUtils 这个工具类主要作用就是帮我们创建SqlSession对象。

  • 什么是SqlSession,它类似于JDBC中的Connection,SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行被映射的SQL语句

  • 那么SqlSession对象是如何被创建的呢?根据代码得出Sqlsession对象是由SqlSessionFactory 创建的,而SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象类获得,而SqlSessionFactoryBuilder则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例
    这里也再一次强调了配置文件的作用,就是让SqlSessionFactoryBuilder建立一个SqlSessionFactory,从而创建出SqlSession,再通过这个实例对数据库进行操作

  • 而我们最开始这两代码 ,主要就是将配置文件用String保存,通过org.apache.ibatis.io.Resources工具类用于读取MyBatis的配置文件,转换成输入流,最终用于获取SqlSessionFactory。为什么要转换成InputStream格式呢?看下图,因为build()方法参数的需要:

String mybatis_conf ="mybatis-conf.xml";   
InputStream inputStream = Resources.getResourceAsStream(mybatis_conf);

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值