Mybatis 坑路1 -> MyBatis 入门

MyBatis 是什么

使用 MyBatis 进行简单开发

Mybatis 入门

  Mybatis 是一个简化和实现了 Java 数据持久化层(persistence layer)的开源框架,它抽象了大量的 JDBC 冗余代码,并提供了一个简单易用的 API 和数据库交互。
  MyBatis 的前身是 iBATIS,iBATIS 于 2002 年由 Clinton Begin 创建。MyBatis3 是 IBATIS 的全新设计,支持注解和 Mapper。
  MyBatis 流行的主要原因在于它的简单性和易使用性。在 Java 应用程序中,数据持久化层涉及到的工作有:将从数据库查询到的数据生成所需要的 Java 对象;将 Java 对象中的数据通过 SQL 持久化到数据库中。
  MyBatis 通过抽象底层的 JDBC 代码,自动化 SQL 结果集产生 Java 对象、Java 对象的数据持久化数据库中的过程使得对 SQL 的使用变得容易。

当前有很多 Java 实现的持久化框架,而 MyBatis 流行起来的有以下原因:

  • 它消除了大量的 JDBC 冗余代码
  • 它有低的学习曲线
  • 它能很好地与传统数据库协同工作
  • 它可以接受 SQL 语句
  • 它提供了与 Spring 框架的集成支持
  • 它提供了与第三方缓存类库的集成支持
  • 它拥有更好的性能

使用 MyBatis 进行简单开发

  • 使用 MyBatis 开发一个简单的 Java 项目步骤:
  • 新建表 STUDENTS,插入样本数据
  • 新建一个 Java 项目,讲 MyBatis-3.3.0.jar 添加到 classpath 中
  • 新建 MyBatisSqlSessionFactory 单例模式类
  • 新建映射器 StudentMapper 接口和 StudentService 类
  • 新建一个 JUnit 测试类来测试 StudentService

1、使用以下 SQL 脚本往 MySQL 数据库中创建 STUDENTS 表插入样本数据:

CREATE TABLE STUDENTS(
	stud_id int(11) NOT NULL AUTO_INCREMENT,
	name varchar(50) NOT NULL,
	email varchar(50) NOT NULL,
	dob date DEFAULT NULL,
	PRIMARY KEY(stud_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
/* Sample Data for the students table */
insert into students(stud_id,name,email,dob) values (1,'Student1','[email protected]','1990-5-20');
insert into students(stud_id,name,email,dob) values (2,'Student2','[email protected]','1992-10-12');

2、新建一个 Java 项目,将 MyBatis-3.3.0.jar 添加到 classpath 中;

  • 下载 MyBatis 的包: https://github.com/mybatis/mybatis-3/releases;
  • 创建 Java 工程,把 MyBatis-3.3.0.jar 以及它的可选的依赖包如 slf4j/log4j 日志 jar 包添加到工程的 lib 目录;
  • 将 junit-4.11.jar 和 mysql-connector-java-5.1.22.jar 添加到 classpath 中;
  • 新建 log4j.properties 文件,添加到 classpath 中

3、新建 mybatis-config.xml 和映射器 StudentMapper.xml 配置文件;

创建 MyBatis 的主要配置文件 mybatis-config.xml,其中包括数据库连接信息,类型别名等,然后将其加到 classpath 中;




	
		
	
	
		
			
			
				
				
				
				
			
		
	
	
		
	

创建 SQL 映射器 XML 配置文件 StudentMapper.xml 并且将它放在 xx.mybatis3.domain.mappers 包中:




	
		
		
		
		
	
	
	
	
		INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,DOB) VALUES(#{studId},#{name},#{email},#{dob})
	

4、新建 MyBatisSqlSessionFactory.java 类文件,实例化它。使其持有一个 SqlSessionFactory 单例对象

import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisSqlSessionFactory {
    private static final String resource = "mybatis3-config.xml";
    private static SqlSessionFactory sqlSessionFactory;
    private static InputStream inputStream;
    static{
        try{
            inputStream = Resources.getResourceAsStream(resource);
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
    private MyBatisSqlSessionFactory(){}

    public static synchronized  SqlSessionFactory getInstance() {
        if (null == sqlSessionFactory) {
            // 1.创建会话工厂,传入 mybatis3 的配置文件信息
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        }
        return sqlSessionFactory;
    }

}

5、新建 StudentMapper 接口和 StudentService 类,创建 JavaBean Student

Mybatis 坑路1 -> MyBatis 入门_第1张图片

6、写一个 Junit 测试类进行测试

import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import xx.mybatis3.domain.Student;
import xx.mybatis3.factory.MyBatisSqlSessionFactory;

public class StudentService {
	@Test
	public void findAllStudents(){
		String resource = "mybatis3-config.xml";
		SqlSession sqlSession = null;
		try{
			SqlSessionFactory sqlSessionFactory =MyBatisSqlSessionFactory.getInstance();
			// 2.通过工厂得到 SqlSession
			sqlSession = sqlSessionFactory.openSession();
			// 3.通过 sqlSession 操作数据库
			List studentList = sqlSession.selectList("findAllStudents");
			System.out.println(studentList);
		}finally {
			if(sqlSession !=null) {
				sqlSession.close();
			}
		}
	}
}

你可能感兴趣的:(Java,javaee,mybatis)