第2章 MyBatis HelloWorld

2.1 开发环境的准备

  1. 导入MyBatis框架的jar包、Mysql驱动包、log4j的jar包
myBatis-3.4.1.jar
mysql-connector-java-5.1.37-bin.jar
log4j.jar
  1. 导入log4j 的配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="info" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>

2.2 创建测试表

-- 创建库
CREATE DATABASE test_mybatis;
-- 使用库
USE test_mybatis;
-- 创建表
CREATE TABLE tbl_employee(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
last_name VARCHAR(50),
email VARCHAR(50),
gender CHAR(1)
);

2.3 创建javaBean

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 + "]";
}

2.3 创建MyBatis的全局配置文件

  1. 参考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">
<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_1129" />
<property name="username" value="root" />
<property name="password" value="1234" />
</dataSource>
</environment>
</environments>
<!-- 引入SQL映射文件,Mapper映射文件 -->
<mappers>
<mapper resource="EmployeeMapper.xml" />
</mappers>
</configuration>

2.4 创建Mybatis的sql映射文件

  1. 参考MyBatis的官方手册
<?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="suibian">
<select id="selectEmployee" resultType="com.atguigu.myabtis.helloWorld.Employee">
select id ,last_name lastName ,email ,gender from tbl_employee where id = #{id}
<!-- select * from tbl_employee where id = #{id} -->
</select>
</mapper>

2.5 测试

  1. 参考MyBatis的官方手册
@Test
public void test() throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
System.out.println(sqlSessionFactory);

SqlSession session = sqlSessionFactory.openSession();
try {
Employee employee =
session.selectOne("suibian.selectEmployee", 1001);
System.out.println(employee);
} finally {
session.close();
}
}

2.6 Mapper接口开发MyBatis HelloWorld

  1. 编写Mapper接口
public interface EmployeeMapper {

public Employee getEmployeeById(Integer id );

}
  1. 完成两个绑定

  • ①Mapper接口与Mapper映射文件的绑定在Mppper映射文件中的标签中的namespace中必须指定Mapper接口的全类名
  • ②Mapper映射文件中的增删改查标签的id必须指定成Mapper接口中的方法名.

  1. 获取Mapper接口的代理实现类对象
@Test
public void test() throws Exception{
String resource = "mybatis-config.xml";
InputStream inputStream =
Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder()
.build(inputStream);
SqlSession session =
sqlSessionFactory.openSession();

try {
//Mapper接口:获取Mapper接口的 代理实现类对象
EmployeeMapper mapper =
session.getMapper(EmployeeMapper.class);
Employee employee =
mapper.getEmployeeById(1006);
System.out.println(employee);
} finally {
session.close();
}
}