1.数据库数据表准备工作:

-- 1、创建数据库 yonghedb 数据库
create database if not exists yonghedb charset utf8;
use yonghedb; -- 选择yonghedb数据库
-- 2、删除emp表(如果存在)
drop table if exists emp;
-- 3、在 yonghedb 库中创建 emp 表
create table emp(
	id int primary key auto_increment,
	name varchar(50),
	job varchar(50),
	salary double
);
-- 4、往 emp 表中, 插入若干条记录
insert into emp values(null, '王海涛', '程序员', 3300);
insert into emp values(null, '齐雷', '程序员', 2800);
insert into emp values(null, '刘沛霞', '程序员鼓励师', 2700);
insert into emp values(null, '陈子枢', '部门总监', 4200);
insert into emp values(null, '刘昱江', '程序员', 3000);
insert into emp values(null, '董长春', '程序员', 3500);
insert into emp values(null, '苍老师', '程序员', 3700);
insert into emp values(null, '韩少云', 'CEO', 5000);

二、创建项目并给项目导入jar:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com</groupId>
	<artifactId>mybatisday01</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<dependencies>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.8</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.37</version>
		</dependency>
		<!-- junit单元测试 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
		</dependency>
		<!-- 整合log4j -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.6.4</version>
		</dependency>
	</dependencies>
</project>

jar包导入效果:

EMWIN 创建自己的字符库_xml


log4j.properties文件的内容:

# Global logging configuration
log4j.rootLogger=DEBUG, stdout

# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
log4j.logger.java.sql.ResultSet=INFO #本行一下内容是为了在控制台打印SQL
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

注意:此日志文件的位置放到src/main/resource路径下

三、编写实体类用于封装查询结果的数据:

EMWIN 创建自己的字符库_EMWIN 创建自己的字符库_02


提示: Emp类的有参构造无参构造、 hashCode&equals方法、 toString等方法自己自动生成

四、编写一个包含查询方法的接口EmpMapper:

(mybatis运行时会根据xml文件自动为此接口生成实现类,最终真正调用的是实现类)

package com.zyq.mapper;

import java.util.List;

import com.zyq.pojo.Emp;

public interface EmpMapper {
	public List<Emp> findAll();
}

五、编写EmpMapper.xml,并在里边定义SQL语句:

注意:此xml的namespace需要写接口的完全限定名(包名.类名), 是为了根据EmpMapper.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值表示当前这个mapper文件 框架底层会根据namespace值来定位当前这个mapper文件 -->
<mapper namespace="com.zyq.mapper.EmpMapper">
	<!-- 在mapper根据标签内部可以添加很多SQL标签 select:存放查询类型的SQL语句 insert、delete、update:存放增/删/改类型的SQL语句 -->

	<!-- 练习1: 查询emp表中的所有员工信息 resultType属性: 用于指定使用什么类型来封装SQL语句查询的结果 如果查询员工信息,可以指定用Emp对象来进行封装,因此resultType需要指向 
		Emp类的全限定类名 -->
	<select id="findAll" resultType="com.zyq.pojo.Emp">
		select * from emp
	</select>
</mapper>

六、配置mybatis的主配置文件(主要配置数据库连接的数据源和mapperxml文件的位置):

6.1.在/src/main/resources路径下新建jdbc.properties配置文件:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/yonghedb?characterEncoding=utf-8&useUnicode=true
jdbc.username=root
jdbc.password=123456

6.2.在/src/main/resources路径下配置MyBatis的主配置文件:

<?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">
<!-- MyBatis的全局配置文件 -->
<configuration>
	<properties resource="jdbc.properties"></properties>
	<!-- 一、配置环境,environments下可配置多个环境(比如:develop开发、test测试) -->
	<environments default="develop">
		<environment id="develop">
			<!-- 配置事务管理方式:JDBC/MANAGED.  JDBC:将事务交给JDBC管理(推荐)MANAGED:自己管理事务-->
			<transactionManager type="JDBC"></transactionManager>
			<!-- 配置数据源,即连接池 JNDI/POOLED/UNPOOLED	JNDI:已过时	POOLED:使用连接池(推荐)    UNPOOLED:不使用连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>
	
	<!-- 二、引入Mapper配置文件,可以配置多个。  resource指向类路径, EmpMapper。xml编译后会自动拷贝到类路径下(项目行啊的target下的classes下)-->
	<mappers>
		<mapper resource="EmpMapper.xml"/>
	</mappers>
</configuration>

七、编写测试类:

package com.zyq.testMyBatis;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

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.After;
import org.junit.Before;

import com.zyq.mapper.EmpMapper;
import com.zyq.pojo.Emp;

public class Test {
	
	SqlSession sqlsession=null;
	@Before
	public void beforeSQL() throws IOException {
		InputStream in=Resources.getResourceAsStream("mybatis-config.xml");
		SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);
		sqlsession=factory.openSession(true);
	}
	
	@org.junit.Test
	public void testFindAll(){
		//方式一、没有EmpMapper接口时这样测试
		//List<Emp> emps=sqlsession.selectList("com.tedu.mapper.EmpMapper.findAll");
		//方式二、有EmpMapper接口时这样测试
		EmpMapper mapper=sqlsession.getMapper(EmpMapper.class);
		List<Emp> emps=mapper.findAll();
		
		for (Emp e : emps) {
			System.out.println(e);
		}
	}
	
	@After
	public void afterSQL(){
		sqlsession.close();
	}
}

八、运行结果:

EMWIN 创建自己的字符库_apache_03