1、准备工作:
a、在 MYSQL 中新建一个 mybatis 数据库,并且创建一个 table,在这个表格中录入一条记录。
注:我使用的是 SQLyog,你们也可以使用命令行直接创建库和表。
2、在 eclipse 中创建一个 java 工程:
- 创建一个名为 Employee 的 bean 类,并且在这个工程的路径下创建一个 lib 文件夹,用于存放需要的 jar 包。 (需要的 jar 包为 mybatis-3.4.1.jar 、mysql-connector-java-5.1.37-bin.jar 和 log4j.jar)
注:jar 包可以去 mybatis 官网下载,我这里提供一个网盘下载(http://pan.baidu.com/s/1c2H3udq)。mysql-connector-java-5.1.37-bin.jar 是为连接 mysql 数据库,而 log4j.jar 则是为了打印日志信息。(需要一个 log4j.xml 配置文件,我把它添加在类路径下,即如图所示的 conf 资源文件夹下)(log4j.xml 配置文件的内容我在 网盘链接中也有提供。)
3、mybatis 的第一个 HelloWorld 程序的相关配置问题:
a、阅读 mybatis-3.4.1.pdf 文档可知,(在 mybatis-3.4.1.zip\mybatis-3.4.1 目录下,上面的网盘中有提供。)需要从 xml 配置文件中创建一个 SqlSessionFactory。我把它名为 mybatis-config.xml,这个配置文件的内容如下图所示。(mybatis-config.xml 文件为全局配置文件,也在类路径下)
注:每一个 MyBatis 应用都是围绕一个 SqlSessionFactory 实例进行的,一个 SqlSessionFactory 实例可以由 SqlSessionFactoryBuilder 对象提供,SqlSessionFactoryBuilder 对象可以从配置文件中创建一个 SqlSessionFactory 实例。
注:可以看到,配置文件中 dataSource 标签是提供配置数据库连接的相关信息的,而 mapper 标签则是提供将我们写好的sql映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中。(这个配置的内容为数据源等一些运行环境的信息)
b、在类路径下创建一个名为 Employee-Mapper.xml 的 sql 映射文件(文件中配置每一个sql,以及sql的封装规则等)
注: namespace:名称空间;指定为接口的全类名
id:唯一标识
resultType:返回值类型
#{id}:从传递过来的参数中取出id值
(这里简单地了解一下,之后的博文中会详细地说明)
c、创建一个名为 MyBatisTest 的测试类,并添加如图所示的代码:
注:使用 InputStream 输入流将类路径下的 mybatis-config.xml 文件加载进内存中,通过 SqlSessionFactoryBuilder 实例创建一个 SqlSessionFactory 对象,通过 SqlSessionFactory 对象的方法获得一个 SqlSession 对象(获取sqlSession实例,能直接执行已经映射的sql语句)再通过 selectOne 方法获得一个 Employee 实例。
selectOne 方法中有两个参数,分别为 sql 的唯一标识和执行 sql 要用的参数(即 EmployeeMapper.xml 中的 id 标识,最好加上命名空间,避免错误)。
d、测试类中的输出结果:
注:在输出结果中可以看到,测试代码已经将一条数据库中的表的记录封装成一个对象 。
4、也可以使用接口和 sql 映射文件进行动态绑定:
a、定义一个 名为 EmloyeeMappper 的接口,并且在接口中规范一个方法。再将该接口和 Sql 映射文件进行动态绑定。
b、可以看到测试类中,SqlSession 类中的openSession 实例使用 getMapper 方法获得 EmployeeMapper 对象(动态创建了一个代理对象),后直接可以调用接口的方法。(如下图中的输出接口。)
附:说明一下一些以上可能不太理解的问题:
a、mybatis 的接口式编程
使用原生的JDBC、Hibernate:Dao ==> DaoImpl
使用 mybatis:Mapper ==> xxMapper.xml
b、SqlSession 代表和数据库的一次回话;用完必须关闭
c、SqlSession 和 connection 一样她都是非线程安全的,每次使用都应该去获取新的对象
d、mapper 接口没有实现类,但是 mybatis 会为这个接口生成一个代理对象(将接口和 xml 进行绑定)
EmployeeMapper empMapper = sqlSession.getMapper(EmployeeMapper.class);
e、两个重要的配置文件:
mybatis 全局配置文件:包含数据库连接池信息,事务管理器信息等系统运行环境信息
sql 映射文件:保存了每一个 sql 语句的映射信息,将 sql 抽取出来
以上是简单的 Mybatis 的 HelloWorld,先试试水,之后的博文中会详细说明。