从0开始,直接动手操作,实现第一个Mybatis程序:Hello World
Table of Contents
获取MyBatis
获取MyBatis:https://github.com/mybatis/mybatis-3
点击下载按钮,将会跳转到:https://github.com/mybatis/mybatis-3/releases
选择合适的版本进行下载,下载后的zip包内容:
导入Jar包
创建一个Java项目,创建一个lib文件夹。导入MyBatis的Jar包(MyBatis-版本.jar核心包)和MySQL驱动包:
执行BuildPath:
创建配置文件
创建资源文件夹config,用于放置配置文件。加入log4j.properties和SqlMapConfig.xml配置文件
log4j.properties
在config下创建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
SqlMapConfig.xml
在config下创建SqlMapConfig.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>
<!-- 注意:和spring整合后 environments配置将废除,因为Spring会自动帮我们连接数据库-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/kdb?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="kyle" />
</dataSource>
</environment>
</environments>
</configuration>
SqlMapConfig.xml是mybatis核心配置文件,配置文件内容为数据源、事务管理。
准备数据库和表
MySQL的用户名和密码:root kyle
-- 1.创建一个名为kdb的数据库并设置编码
CREATE DATABASE kdb CHARACTER SET utf8;
-- 2.切换到kdb数据库
USE kdb;
-- 3.创建一个表格
CREATE TABLE person (
pid INT PRIMARY KEY AUTO_INCREMENT COMMENT '人的编号,作为主键,编号自动增长',
pname VARCHAR(20) NOT NULL COMMENT '人的姓名,不可以为空',
psex VARCHAR(20) DEFAULT NULL COMMENT '性别',
page INT DEFAULT NULL COMMENT '年龄,默认为空',
paddress VARCHAR(50) DEFAULT NULL COMMENT '住址,默认为空',
ptel VARCHAR(15) DEFAULT NULL COMMENT '电话',
pemail VARCHAR(50) DEFAULT NULL COMMENT '电邮'
);
-- 4.添加几条记录
INSERT INTO person VALUES (1,'Jhon',20,'man','HongKong','16818181818','jhon@pronhub.com'),
(2,'Project Alice',32,'man','raccoon city','15745452525','alice@umbrella.com'),
(3,'Fukada Eimi',28,'man','Japanese','10100101010','fukada@javbus.com'),
(4,'Yourer',25,'man','Japanese','19191918989','you@thepxxxtube.com'),
(5,'anay',22,'man','Taiwan','11100101001','anay@darkwiki.oni*on')
创建POJO(JavaBean)
为实体创建映射文件
为每个POJO类创建一个同名映射文件,在config下的sqlmap目录下创建sql映射文件Person.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:命名空间,用于隔离sql,还有一个很重要的作用 -->
<mapper namespace="first">
</mapper>
加载每个映射文件
将Person.xml配置到SqlMapconfig.xml中:
在实体映射文件中编写SQL
在Person.xml中添加select标签,编写SQL:
执行&获取结果
步骤:
1. 创建SqlSessionFactoryBuilder对象
2. 加载SqlMapConfig.xml配置文件
3. 创建SqlSessionFactory对象
4. 创建SqlSession对象
5. 执行SqlSession对象执行查询,获取结果User
6. 打印结果
7. 释放资源
package 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 pojo.Person;
public class HelloMyBatis {
public static void main(String[] args) throws IOException {
//1. 加载核心配置文件
String resource = "SqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
// 2. 创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
// 3. 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 执行Sql语句
Person user = sqlSession.selectOne("first.queryUserById", 2);
System.out.println(user);
}
}