一、MyBatis简介
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
二、入门示例
1、创建maven项目
在idea或eclipse常用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包,然后创建BaseMapperTest和CountryMapperTest测试类。
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从入门到精通》