Mybatis新手项目搭建全过程—个人学习笔记-超详细

叙:这是之前本人学习mybatis的笔记,比较详细,因为之前的学习笔记有些放在电脑上被误删了,所以还是整理一下存到网上吧,也希望能帮到一些童鞋~



首先,我们要知道MyBatis这个框架是什么?是做什么用的?然后才需要学习怎么用它,最后需要知道它为什么这么用,下面就以这种思路来展开我的学习笔记的记录;

1、MyBatis这个框架是什么?

MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github(这一点个人觉得是MyBatis框架想要进一步推广,进军世界级使用量的一步举措)。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。


2、MyBatis是做什么用的?

MyBatis是一个基于Java的持久层框架,这是它的本质,说直白点就是和Hibernate框架存在的目的一样,都是为了操作数据库而生(而之所以有了Hibernate这个ORM数据持久层框架还会诞生MyBatis是因为他们的侧重点不同,在此不做详细叙述;)


3、MyBatis基础配置(干货)

明白了这个框架存在的意义,便有了学习他的目的,下面开始针对MyBatis进行入门级的学习,首先配置跑通一个MyBatis环境,一般配置一个框架环境都是有这几步来完成:一、创建一个新项目;二、导入框架所需要的Jar包;三、创建数据库表;四、创建框架配置文件(一般框架都或多或少的会存在一些文件项的配置);五、POJO创建;六、编写测试代码;
明白了大致流程,走起~


3.1、创建一个新项目

创建一个项目就不必说他多,直接看截屏就好;
在这里插入图片描述
其中我所用的jar包对于jdk要求在1.7或以上,因此我使用的是1.8的jdk,在创建时要注意使用的jar包和jdk的版本是否适配;
创建后的项目,如下图:
在这里插入图片描述
项目的组成只有 srcJRE System Library 这两个包,接下来我们对于需要的包可以手动创建;


3.2、项目所需引入的Jar包

Jar包存放的位置需要手动创建一下,在项目名下创建一个名为 libFolder 文件夹,里面专门存放我们的jar包,如下图:
在这里插入图片描述
创建如下:
在这里插入图片描述
现在jar包存放的文件路径已经创建安好了,我们需要查看一下自己的jar包有哪些?

  1. 首先是MyBatis的jar包,只有一个:mybatis-3.5.4.jar(下载文件的路径下方有贴出来);
  2. 其他的jar包(例如:日志包、连接数据库包等);

Mybatis框架包下载路径如下,在这个里面有各个版本的jar包:https://github.com/mybatis/mybatis-3
在这里插入图片描述
进入:
在这里插入图片描述
其他所需jar包如下图所示:
在这里插入图片描述
把总共11个jar包导入后选中所有进行Add to Build Path一下,如下图:
在这里插入图片描述
添加完后如下所示:
在这里插入图片描述
到此,项目的jar包便引入完毕了;


3.3、创建数据库表

Mybatis入门学习,数据库表没必要弄那么复杂,首先建立一个User表,我的数据库名称是:mybatis,编码字符集是 UTF-8 的,然后在里面创建了User数据表,其运行SQL的数据如下:

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
  `uuid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户id',
  `username` varchar(12) NOT NULL COMMENT '用户名称',
  `birthday` date DEFAULT NULL COMMENT '出生日期',
  `address` varchar(20) DEFAULT NULL COMMENT '现居地址',
  `gender` varchar(1) NOT NULL COMMENT '性别',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

创建了user数据表后插入一条数据,插入SQL如下:

INSERT `user`
VALUES
	(
		'1',
		'ba6567ac-8f41-11ea-b8d9-fc459696f733',
		'测试',
		'1989-04-20',
		'三国',
		'0'
	)

运行结果:

在这里插入图片描述

刷新表后看到对应数据;


3.4、框架配置文件

Mybatis主要有两中配置文件,一个是配置数据库数据的(一个项目只有一个),另一个是配置POJO数据对象与数据库形成映射SQL语句的(一个项目有N个,原则上是每个POJO都有自己的一个这样的配置文件);而这两种配置文件一般尽量把他们放到一起,创建一个文件夹,命名要求不高,但是需要通俗易懂,一般可以用 configxml 等,此文件夹的存放在项目名即可,和 src 文件夹同层,如下图:
在这里插入图片描述

  • 第一种:log4j.properties—日志配置文件
    此文件不需要我们创建,但是需要从网上下载复制粘贴到config包中,下载网址(非官网,亲测可用):http://www.bvbcode.com/cn/8ejthn4s-2892004-down
  • 第二种手动创建的配置文件: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>
	<!-- 和spring整合后 environments配置将废除 -->
	<environments default="development">
		<!-- 开发环境 -->
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<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="root" />
			</dataSource>
		</environment>
		
		<!-- 测试环境 -->
		<environment id="test">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url"
					value="jdbc:mysql://localhost:3306/mybatisTest?characterEncoding=utf-8" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="mybatis/user.xml" />
	</mappers>
</configuration>

其中configuration标签中的 default 属性是指当配有多个环境的数据库时切换所连接的数据库,不同环境的数据库链接需要在<environment id="xxx">的id中进行配置,通过 Id 来进行区分;
<mapper resource="mybatis/user.xml" />代码是将后续的一个POJO对象的SQL配置文件加载进来,先提前写出来;

  • 创建第二种配置文件:user.xml
    这是针对POJO对数据库sql关系映射的配置文件,简单点说就是在POJO对象上发生的SQL事件都最终写在这个POJO的配置文件里,一般都会存在多个这样的不同名称的配置文件,因此专门为这些文件在config文件包里新建一个mybatis包,用以存放这一类型的文件,创建如下:
    在这里插入图片描述
    然后在此包下创建一个 user.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="user">
	<!-- 在注释下方进行编码 -->
	
</mapper>

创建完成后将此文件关联到mybatis的核心配置文件sqlMapconfig.xml中,就是那个<mapper resource="mybatis/user.xml" />;注意引入路径是以核心配置文件为起点的;


3.5、创建POJO对象

之前一直提的POJO对象,现在开始创建,首先,在“src”文件包下创建一个POJO文件夹,专门用于存放POJO对象的,然后再在这个文件夹下根据之前创建的数据库表 user 表,编写 user.java 代码如下:

package com.java.POJO;

import java.util.Date;

public class User {

	private int id;
	private String uuid;
	private String username;// 用户姓名
	private String gender;// 性别
	private Date birthday;// 生日
	private String address;// 地址

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUuid() {
		return uuid;
	}

	public void setUuid(String uuid) {
		this.uuid = uuid;
	}
	
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getSex() {
		return gender;
	}

	public void setSex(String sex) {
		this.gender = sex;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	@Override
	public String toString() {
		return "\n 用户编号:" + id + ", 唯一标识码:" + uuid + ", 名称:" + username
				+ ", 性别:" + gender + ", 出生日期:" + birthday
				+ ", 地址:" + address + "\n" ;
	}
	
}

3.6、编写测试代码

编写 user 对象的测试代码,首先确定我们要实现有关 user 这个对象的什么功能,而实现功能的主要代码其实是SQL操作,因此,我们先在 user 对象的SQL配置文件 user.xml 文件中进行相关操作;

  • 测试代码功能:查询 ID 为 “ 1 ” 的user用户信息;
  • user.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="user">
	<!-- id:此条SQL的唯一标识符          parameterType:传入参数类型         resultType:返回结果类型  -->
	<select id="getUserById" parameterType="int" resultType="com.java.POJO.User">
		<!-- #{}:占位符,相当于是JDBC的'?'占位符 -->
		<!-- 如果传入进来的数据类型是常规的数据类型,可任意填充 -->
		SELECT * FROM `user` u WHERE u.id= #{id}
	</select>
</mapper>
  • class 文件中的Test代码:
package com.java.Test;


import java.io.IOException;
import java.io.InputStream;

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.Test;

import com.java.POJO.User;

public class TestClass {
	/**
	 * 通过ID查询用户信息
	 * @throws IOException
	 */
	@Test
	public void TestGetUserById() throws IOException{
		// 创建SqlSessionFactoryBuilder对象
		SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
		// 创建获取到sql语句配置文件的输入流对象
		InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
		// 使用sql语句配置文件的输入流对象配合SqlSessionFactoryBuilder对象创建sqlSessionFactory(sqlsession工厂)对象
		SqlSessionFactory sqlSessionFactory = ssfb.build(resourceAsStream);
		// 创建sqlsession工厂的对象       true:开启自动提交事务
		SqlSession openSession = sqlSessionFactory.openSession(true);
		// 获取用户信息
		User userObj = openSession.selectOne("user.getUserById", 1);
		System.out.println(userObj);
		// 释放资源
		openSession.close();
	}
	
}


3.7、测试

测试结果如下图:
在这里插入图片描述
能看到日志中能看到很多信息,例如:创建连接编号、SQL语句、传入参数及其类型、结果数量、结果展示、关闭JDBC连接、返回连接到连接池等。


以上就是Mybatis框架的搭建基本过程,至于进一步的笔记还在整理中,之前写的东西,现在需要再跑一遍确保万无一失才能发出来~

pass:存在不足之处,希望各位大佬童鞋们斧正~


《END》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风暖云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值