Fantastic_Clouds

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

一、MyBatis简介

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

 

二、入门示例

1、创建maven项目

ideaeclipse常用IDE中创建maven项目,maven基本信息如下:

<groupId>tk.mybatis</groupId>
<artifactId>simple</artifactId>
<version>1.0-SNAPSHOT</version>

项目创建成功后,在src/main/java下创建package : tk.mybatis.simple.model。此时,项目结构如下图所示:

然后,在pom.xml中添加常用配置及插件:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
         </plugin>
    </plugins>
</build>

 接下来,添加MyBatis、数据库连接及常用工具依赖:

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.3.1</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.12</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.12</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
</dependencies>

 至此,基本开发环境搭建完成。

2、创建数据库表结构及初始数据

Navicat中创建本地数据库mybatis,并创建country表。

-- ----------------------------
-- Table structure for country
-- ----------------------------
DROP TABLE IF EXISTS `country`;
CREATE TABLE `country` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `countryname` varchar(255) DEFAULT NULL,
  `countrycode` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of country
-- ----------------------------
INSERT INTO `country` VALUES ('1', '中国', 'CN');
INSERT INTO `country` VALUES ('2', '美国', 'US');
INSERT INTO `country` VALUES ('3', '俄罗斯', 'RU');
INSERT INTO `country` VALUES ('4', '英国', 'GB');
INSERT INTO `country` VALUES ('5', '法国', 'FR');

 3、添加MyBatis配置文件mybatis-config.xml

路径:src/main/resources

文件名: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>
    <!--  指定使用log4j输出日志  -->
    <settings>
        <setting name="logImpl" value="LOG4J"/>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <!--  设置模型类别名,在mapper文件中可直接使用类型,未设置则需要使用全限定名称  -->
    <typeAliases>
        <package name="tk.mybatis.simple.model"/>
    </typeAliases>

    <!--  设置运行环境数据库配置信息  -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC">
                <property name="" value=""/>
            </transactionManager>
            <dataSource type="UNPOOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="0o9i8u7y6t,,."/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="tk/mybatis/simple/mapper/CountryMapper.xml"/>
    </mappers>
</configuration>

4、创建实体类、Mapper.xml

实体类位置:tk.mybatis.simple.model

实体类内容:

public class Country {
    private long id;
    private String countryname;
    private String countrycode;

    // getters and setters...
}

Mapper文件位置:src/main/resources/tk/mybatis/simple/mapper

Mapper文件名称:CountryMapper.xml

Mapper文件内容:

<?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="tk.mybatis.simple.mapper.CountryMapper">
    <select id="selectAll" resultType="Country">
        select id, countryname, countrycode from country
    </select>
</mapper>

 5、配置Log4j

src/main/resources添加log4j.properties,文件内容如下:

# 全局配置
log4j.rootLogger=ERROR, stdout
# MyBatis日志配置
log4j.logger.tk.mybatis.simple.mapper=TRACE
# 控制台输出配置
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

 6、添加测试方法

src/test/java下创建tk.mybatis.simple.mapper包,然后创建BaseMapperTestCountryMapperTest测试类。

public class BaseMapperTest {
    private static SqlSessionFactory sqlSessionFactory;

    @BeforeClass
    public static void init() {
        try {
            // 通过Resources工具类将mybatis-config.xml配置文件读入Reader
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            // 通过SqlSessionFactoryBuilder建造类使用Reader创建sqlSessionFactory
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }
}

 

public class CountryMapperTest extends BaseMapperTest {

    @Test
    public void testSelectAll() {
        SqlSession sqlSession = getSqlSession();
        try {
            List<Country> countryList = sqlSession.selectList("selectAll");
            printCountryList(countryList);
        } finally {
            sqlSession.close();
        }
    }

    private void printCountryList(List<Country> countryList) {
        for (Country country : countryList) {
            System.out.printf("%-4d%4s%4s\n",
                    country.getId(), country.getCountryname(), country.getCountrycode());
        }
    }
}

 

三、运行程序

通过Junit运行测试方法testSelectAll(),控制台可看到如下输出,程序运行成功!

 

以上内容整理自:《MyBatis从入门到精通》

posted on 2020-06-05 00:22  Fantastic_Clouds  阅读(154)  评论(0编辑  收藏  举报