搭建Mybatis环境

用到的包和组件

MyBatis 下载地址:https://github.com/mybatis/mybatis-3/releases

同时需要大家先安装 MySQL,我们这里使用 MySQL 数据库:https://www.mysql.com/downloads/

然后我们还需要安装 MySQL 驱动包 mysql-connector-java-5.1.7-bin.jar,下载地址:http://www.java2s.com/Code/JarDownload/mysql/mysql-connector-java-commercial-5.1.7-bin.jar.zip

什么是 MyBatis

MyBatis 是一个支持普通 SQL 查询、存储过程和高级映射的优秀持久层框架。以前我们在 Java 中操作数据库需要使用 JDBC,需要写各种 SQL 脚本,配置各种参数、连接对象、命令对象等。现在有了 MyBatis,我们操作数据库变得更加简单和方便了。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

创建项目

打开 Eclipse,创建一个 Dynamic Web Project 项目,当然我们也可以使用普通的 Java 项目,因为 MyBatis 不是专门为 BS 架构使用的。那我们这里就使用普通的 Java 项目。

引入下面两个包:

  • mybatis-3.4.6.jar
  • mysql-connector-java-commercial-5.1.7-bin.jar

准备数据库

打开 Navicat 连接到 MySQL,然后创建一个数据库 cms,再创建一张表:

DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Name` varchar(50) NOT NULL,
  `Age` int(11) NOT NULL,
  `Sex` tinyint(4) NOT NULL,
  `AddTime` date NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;Code language: JavaScript (javascript)

然后插入一条记录用来测试:

-- ----------------------------
-- Records of account
-- ----------------------------
INSERT INTO `account` VALUES ('1', '张三', '12', '1', '2018-11-11');
INSERT INTO `account` VALUES ('2', '李四', '13', '0', '2018-11-01');Code language: JavaScript (javascript)

配置 MyBatis

添加 MyBatis 的配置文件 conf.xml,在 src 下面添加一个 conf.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/cms" />
                <property name="username" value="root" />
                <property name="password" value="123321" />
            </dataSource>
        </environment>
    </environments>  
</configuration>Code language: HTML, XML (xml)

准备表对应的实体类

我们创建一个 Account 的实体类,字段和表对应:

package cn.bamn.models;

import java.util.Date;

public class Account {
    public int getID() {
        return ID;
    }
    public void setID(int iD) {
        ID = iD;
    }
    public String getName() {
        return Name;
    }
    public void setName(String name) {
        Name = name;
    }
    public int getAge() {
        return Age;
    }
    public void setAge(int age) {
        Age = age;
    }
    public boolean isSex() {
        return Sex;
    }
    public void setSex(boolean sex) {
        Sex = sex;
    }
    public Date getAddTime() {
        return AddTime;
    }
    public void setAddTime(Date addTime) {
        AddTime = addTime;
    }
    private int ID;
    private String Name;
    private int Age;
    private boolean Sex;
    private Date AddTime;
}Code language: PHP (php)

创建映射文件

我们创建一个包专门用来存放 SQL 映射文件,创建一个 cn.bamn.mapper 的包,然后创建一个 AccountMapper.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="cn.bamn.mapper">
    <!-- 根据id查询得到一个Account对象 -->
    <select id="getAccount" parameterType="int" resultType="cn.bamn.models.Account">
        select * from account where id = #{id}
    </select>
</mapper>Code language: HTML, XML (xml)

在 conf.xml 中配置映射文件

在 conf.xml 文件中注册 AccountMapper.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/cms" />
                <property name="username" value="root" />
                <property name="password" value="123321" />
            </dataSource>
        </environment>
    </environments>  

    <mappers>
       <!-- 注册AccountMapper.xml文件 -->
       <mapper resource="cn/bamn/mapper/AccountMapper.xml"/>
    </mappers>

</configuration>Code language: HTML, XML (xml)

测试 MyBatis 查询

添加一个带 main 方法的类:

import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import cn.bamn.models.Account;

public class Program {

    public static void main(String[] args) throws IOException {
        String resource = "conf.xml";        
        // 使用类加载器加载mybatis的配置文件
        InputStream inputStream = Program.class.getClassLoader().getResourceAsStream(resource);  
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sessionFactory.openSession();
        // 映射sql的标识字符串,查看映射配置文件
        String statement = "cn.bamn.mapper.getAccount";
        // 传入id到配置文件里面的#{id}
        Account account = session.selectOne(statement, 1);
        System.out.println(account.getName() + " - " + account.getID());
    }
}Code language: JavaScript (javascript)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注