Mybatis框架的介绍与使用(一)

一、Mybatis的第一印象

在我们学jdbc技术的时候,sql语句是嵌入到java代码里面的,好处就是简单方便;其实这种高度耦合、硬编码的方式是不利于sql语句的优化。经常用于和mybatis对比的就是Hibernate框架。
Mybatis框架的介绍与使用(一)_第1张图片
Hibernate框架是一个全自动全映射ORM(Object Relation Mapping)框架,目的就是消除sql语句,由该框架自己来发送,把下图中黑色部分全部封装起来,开发人员只需要知道一个JavaBean对应一个数据库表,这也暴露了它的缺点,就是不利于sql语句的优化,如果使用该框架并且还要定制化sql语句,就需要开发人员熟悉掌握HQL。
Mybatis框架的介绍与使用(一)_第2张图片
Mybatis的出现:很好的解决了上述问题,虽然还是黑箱操作,但是通过xml配置文件把编写sql语句的工作交给了开发人员,可以做到对sql语句的优化。
Mybatis框架的介绍与使用(一)_第3张图片

二、Mybatis的使用

mybatis下载地址:https://github.com/mybatis/mybatis-3
mybatis官方文档:https://mybatis.org/mybatis-3/zh/index.html

1、创建MyBatis全局配置文件
可以直接从官方文档里copy过来,修改一下4个value的值。还要注意修改sql语句映射文件的路径,resource=“EmployeeMapping.xml”,把sql语句的配置文件和框架关联起来。

<?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 id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="EmployeeMapping.xml"/>
</mappers>
</configuration>

2、创建JavaBean和数据库表
数据库表的字段根据JavaBean来写就好。

public class Employee {
	private String id;
	private String name;
	private String gender;
	private String email;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	@Override 
	public String toString() {
		return "Employee [id=" + id + ", name=" + name + ", "
				+ "gender=" + gender + ", email=" + email + "]";
	}
}

3、创建SQL映射文件
namespace:名称空间。可以随便取,一般是某个包名
id:唯一标识,用来告诉mybatis执行哪个位置的sql语句
resultType:返回值类型。返回的是实体类和数据库表对应的对象,所以是类型就是实体类(Employee)
#{id}:从传递过来的参数中取出id值

<?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.hr.EmployeeMapper">
<select id="selectEmployee" resultType="com.hr.bean.Employee">
select * from employee where id = #{id}
</select>
</mapper>

4、测试查询表(Employee)中的数据

class mybatisTest {
	@Test
	void test() throws IOException {
		//获取 Mybatis全局配置文件路径
		String resource = "mybatis_conf.xml";

		//通过输入流加载xml配置文件
		InputStream inputStream = Resources.getResourceAsStream(resource);

		//利用xml配置文件创建一个SqlSessionFactory对象
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

		//使用SqlSessionFactory(工厂)获取一个sqlSession对象,使用它来进行增删改查
		SqlSession openSession = sqlSessionFactory.openSession();
		try {
			//使用sqlSession对象可以执行已经映射的sql语句
			//第一个参数sql映射文件里的唯一标识id(selectEmployee),避免与别的文件标签里的id冲突,通常使用 namespace + id 
			//第二个参数是sql语句需要传递进去的参数,参数类型是Object,什么类型都能传,但是不符合sql语句要求的,返回的对象是null
			//返回的是数据库表对应的JavaBean对象
			Employee employee = openSession.selectOne("com.hr.EmployeeMapper.selectEmployee", 1);
			System.out.println(employee);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			openSession.close();//关闭资源
		}
	}
}

查询结果:
Mybatis框架的介绍与使用(一)_第4张图片
项目结构图:
Mybatis框架的介绍与使用(一)_第5张图片

你可能感兴趣的:(JAVA)