mybatis-3.4.5.jar(mybatis核心jar)
mysql-connector-java-5.1.xx-bin.jar(mysql数据库驱动jar)
官方文档

通过以上描述可以提取哪些信息?
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
通过以上代码的第一行可以得出:
mybatis有一个配置文件叫做:mybatis-config.xml
mybatis-config.xml文件存放在类路径中
mybatis框架默认从类的根路径下作为起点开始查找资源
? 什么是类路径?
? bin是类的根路径
? eclipse当中可以看到src(src可以等同看做类的根路径)
在src这个类的根路径下新建一个mybatis-config.xml文件,修改main方法代码:
String resource = "mybatis-config.xml";
编辑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="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>
修改:
<?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/wkcto?useUnicode=true&characterEncoding=utf8&useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    
    <!--通过这里的配置我们可以看出,mybatis还有另一个配置文件,专门编写sql语句的-->
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>
有一点需要注意:在xml文件中,
&
代表&
mybatis-config.xml:核心配置文件,主要配置连接数据库的信息,以及“sql语句配置文件”的路径。
通常这种文件一般都叫做:sql映射文件(例如起名SqlMapper.xml)。
在类路径下创建SqlMapper.xml
修改相应的配置位置(mybatis-config.xml):
<mappers>
    <mapper resource="SqlMapper.xml"/>
</mappers>
官方文档

<?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="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>
package com.wkcto.mybatis.test;
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 java.io.IOException;
import java.io.InputStream;
public class MyBatisTest01 {
    public static void main(String[] args) {
        SqlSession sqlSession = null;
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            //事务自动提交机制关闭,相当于:conn.setAutoCommit(false);
            //SqlSession对象等同看做Connection,专门用来执行sql语句的一个会话对象
            //开启事务
            sqlSession = sqlSessionFactory.openSession();
            // do work(执行核心业务逻辑)
            // 没有出现异常,则事务结束,提交
            sqlSession.commit();
        } catch (IOException e) {
            //出现异常则回滚
            if (sqlSession != null){
                sqlSession.rollback();
            }
            e.printStackTrace();
        } finally {
            //关闭资源
            if (sqlSession != null) {
                sqlSession.close();
            }
        }
    }
}


MyBatisTest01类:
// do work(执行核心业务逻辑)
// 获取所有的学生,返回List集合,List集合中存储Student
List<Student> studentList = sqlSession.selectList("getAll");
SqlMapper.xml配置文件:
    <select id="getAll" resultType="com.wkcto.mybatis.domain.Student">
        select
          id as sid,name as sname,birth as sbirth
        from
          tb1_student
    </select>
可以看到,sqlSession.selectList("getAll");里面的getAll,就是配置文件中sql语句的唯一标识。
为了接收返回结果,创建了一个Student的类。
个人这么理解,先执行sql语句,查询到的结果给谁?给resultType="com.wkcto.mybatis.domain.Student"这个类,然后mybatis框架会自动赋值给Student,注意sql语句列的别名sid 对应 Student类中的 private String sid,这样数据才能匹配得上。
整体代码:
MyBatisTest01类:
package com.wkcto.mybatis.test;
import com.wkcto.mybatis.domain.Student;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MyBatisTest01 {
    public static void main(String[] args) {
        SqlSession sqlSession = null;
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            //事务自动提交机制关闭,相当于:conn.setAutoCommit(false);
            //SqlSession对象等同看做Connection,专门用来执行sql语句的一个会话对象
            //开启事务
            sqlSession = sqlSessionFactory.openSession();
            // do work(执行核心业务逻辑)
            // 获取所有的学生,返回List集合,List集合中存储Student
            List<Student> studentList = sqlSession.selectList("getAll");
            for (Student s : studentList) {
                System.out.println(s.getSid()+","+s.getSname()+","+s.getSbirth());
            }
            // 没有出现异常,则事务结束,提交
            sqlSession.commit();
        } catch (IOException e) {
            //出现异常则回滚
            if (sqlSession != null){
                sqlSession.rollback();
            }
            e.printStackTrace();
        } finally {
            //关闭资源
            if (sqlSession != null) {
                sqlSession.close();
            }
        }
    }
}
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/wkcto?useUnicode=true&characterEncoding=utf8&useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--通过这里的配置我们可以看出,mybatis还有另一个配置文件,专门编写sql语句的-->
    <mappers>
        <mapper resource="SqlMapper.xml"/>
    </mappers>
</configuration>
SqlMapper.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="org.mybatis.example.BlogMapper">
    <select id="getAll" resultType="com.wkcto.mybatis.domain.Student">
        select
          id as sid,name as sname,birth as sbirth
        from
          tb1_student
    </select>
</mapper>
Student - javabean类:
package com.wkcto.mybatis.domain;
public class Student {
    private String sid;
    private String sname;
    private String sbirth;
    public String getSid() {
        return sid;
    }
    public void setSid(String sid) {
        this.sid = sid;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    public String getSbirth() {
        return sbirth;
    }
    public void setSbirth(String sbirth) {
        this.sbirth = sbirth;
    }
}
运行结果:

成功!
SqlSession session = sqlSessionFactory.openSession();//开启事务
<select id="sql语句的唯一id" resultType="返回结果给哪一个类">
	sql语句
</select>
并在selectList()指定这个唯一的sql id
原文:https://www.cnblogs.com/happy-lin/p/15003982.html