MyBatis学习笔记(一)入门

一、简介

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

二、简单例子(快速入门)

1.建立Java Project工程

2.导入数据库驱动包以及MyBatis包

3.建表,首先建立一个mybatis数据库,然后创建一个tbl_employee表

MyBatis学习笔记(一)入门

并插入一些数据

4.添加mybatis-config.xml配置文件,这里我先在工程中创建一个folder(右键项目名->new->folder)取名为conf

 

如图:

MyBatis学习笔记(一)入门

然后添加mybatis-config.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="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="asdasd456789"/>
      </dataSource>
    </environment>
  </environments>
  
  <!-- 需要配置SQL映射文件 -->
  <mappers>
    <!-- <mapper resource="com/atguigu/mybatis/dao/Employee.xml"/> -->
    <!-- <mapper resource="com/atguigu/mybatis/dao/Employee.xml"/> -->
    <!-- 指向该路径 -->
    <mapper resource="EmployeeMapper.xml"/>
  </mappers>
</configuration>

然后在conf文件下创建EmployeeMapper.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">
<!--namespace是命名空间,可以随便取,为什么要有这个是为了以后xml文件过多,可能出现重复文件名,而namespace则可以确定是哪一个xml文件
id:是xml文件的唯一标识(可能有多个相同唯一标识,此时mybatis-config不知道指向那个,而namespace则解决此问题)
resultType:执行sql语句返回什么类型

select:就是sql语句

select id,last_name lastName,email,gender from tbl_employee where id = #{id}
lastName:是数据库字段last_name的别名
#{id}传过来的参数
-->
<mapper namespace="org.mybatis.example.BlogMapper">
	  <select id="selectEmployee" resultType="com.atguigu.mybatis.bean.Employee">
	    select id,last_name lastName,email,gender from tbl_employee where id = #{id}
	  </select>
</mapper>

在src下

package com.atguigu.mybatis.bean;

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

编写测试类

package com.atguigu.mybatis.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.atguigu.mybatis.bean.Employee;
import com.atguigu.mybatis.dao.EmployeeMapper;

public class MyBatisTest {
	@Test   //测试注解,只需右键test函数名,->run as->JUnit Test
	public void test() throws IOException {
		
	    String resource = "mybatis-config.xml";
	    InputStream inputStream = Resources.getResourceAsStream(resource);
	    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	
	    //获取SqlSession实例,能直接执行已经执行映射的sql语句
	    SqlSession openSession = sqlSessionFactory.openSession();
	    try {
	    	 Employee employee = 
openSession.selectOne("org.mybatis.example.BlogMapper.selectEmployee",1);
//第一个参数之指:是哪个命名空间的唯一id,第二个是传过去的参数
	         System.out.println(employee);
	    }
	    finally {
	    
	    openSession.close();
	    }
	}
	
}