一、MyBatis介绍(http://www.mybatis.org/mybatis-3/zh/index.html)
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
二、MyBatis快速入门
1、开发环境搭建
1.1创建maven工程(注:笔者这里创建的是java工程,数据库使用sqlite)
1.2在pom.xml文件中添加sqlite数据库驱动包与mybatis包
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.8.11.2</version>
</dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.8.11.2</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
1.3创建表t_group、t_person(此处创建表的过程忽略,sqlite创建表和mysql中创建表操作相似)
2、使用mybatis框架编写一个简单的查询
2.1编写与t_group表对应的实体类
public class Group { private int id; private String groupName; private String description; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getGroupName() { return groupName; } public void setGroupName(String groupName) { this.groupName = groupName; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
2.2添加MyBatis的配置文件mybatis.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="org.sqlite.JDBC" /> <property name="url" value="jdbc:sqlite:cfg/ht.db" /> <property name="username" value="" /><!-- sqlite属于内置文件型数据库不需要用户名和密码 --> <property name="password" value="" /> </dataSource> </environment> </environments> </configuration>
2.3编写与t_group表对应sql映射文件GroupMapper.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="com.zlt.mybatis.model.Group"> <select id="selectGroupByID" parameterType="int" resultType="Group" > select t.id,t.group_name,t.description from t_group t where t.id = #{id} </select> </mapper>
2.4在mybatis.xml文件中注册GroupMapper.xml文件
在mybatis.xml文件中添加以下内容
<mappers> <mapper resource="com/zlt/mybatis/mapping/GroupMapper.xml" /> </mappers>
2.5编写测试类
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。
从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。但是也可以使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者 file:// 的 URL 形式的文件路径来配置。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,可使从 classpath 或其他位置加载资源文件更加容易。
从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。但是也可以使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者 file:// 的 URL 形式的文件路径来配置。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,可使从 classpath 或其他位置加载资源文件更加容易。
public class TestMyBatis { private static SqlSessionFactory sqlSessionFactory; private static Reader reader; static { try { reader = Resources.getResourceAsReader("mybatis.xml");//加载mybatis的配置文件 sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);//构建sqlSession的工厂 } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { SqlSession session = sqlSessionFactory.openSession();///创建能执行映射文件中sql的sqlSession String statement = "com.zlt.mybatis.model.Group.selectGroupByID";////映射sql的标识字符串 Group group = session.selectOne(statement, 1);////执行查询返回一个唯一group对象的sql if(null != group) { System.out.println("id:" +group.getId()+"name:" +group.getGroupName()+"description:" + group.getDescription()); } } }
2.6运行结果(注:结果虽然出来了,但是group_name属性查出来是空的,而表中的记录是有值的,下一节分析)
2.7最后整个项目结构如下: