MyBatis实战教程

MyBatis目录:

  1. 开发环境搭建
  2. 以接口的方式编程
  3. 实现数据的增删改查
  4. 实现关联数据的查询
  5. 与Spring3集成(附源码)
  6. 与Spring MVC的集成
  7. MyBatis分页实现与源码下载
  8. MyBatis动态SQL语句
  9. MyBatis代码生成工具使用
  10. MyBatis SqlSessionDaoSupport使用(附代码下载)

(读者注:如果你看过Hibernate,这个教程会非常简单。可以参考官方教程:http://mybatis.github.io/mybatis-3/,或其中文版本:http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html)

系列前言:

我以前使用过iBATIS,这是MyBatis的前身。在项目中使用时,我发现它比Hibernate更灵活,性能也更好。此外,它还更轻量级。当时我没有写总结文档。最近,我又对这个ORM工具产生了兴趣,并在接下来的项目中打算使用它,因此开始编写这一系列的MyBatis教程。

什么是MyBatis:

MyBatis是一个支持普通SQL查询、存储过程和高级映射的优秀持久层框架。它消除了几乎所有的JDBC代码和手工设置参数以及结果集的检索。MyBatis通过简单的XML或注解配置,实现接口与数据库记录之间的映射。

ORM工具的基本思想:

无论是Hibernate还是MyBatis,都有以下共同点:

  1. 从配置文件(通常是XML文件)中得到SessionFactory。
  2. 由SessionFactory生成Session。
  3. 在Session中完成数据的增删改查和事务提交等操作。
  4. 使用完毕后关闭Session。
  5. 在Java对象和数据库之间有映射配置文件(通常是XML文件)。

开发环境搭建:

开发环境选择:Eclipse J2EE版本,MySQL 5.1,JDK 1.7,MyBatis 3.2.0。这些工具可以从各自的官方网站下载。

步骤:

1. 创建名为MyBatis的动态Web项目。

2. 将MyBatis和MySQL的JAR包拷贝到Web项目的lib目录。

3. 创建MySQL测试数据库和用户表,并插入一条测试数据。

CREATE TABLE `user` (
 `id` INT(11) NOT NULL AUTO_INCREMENT,
 `userName` VARCHAR(50) DEFAULT NULL,
 `userAge` INT(11) DEFAULT NULL,
 `userAddress` VARCHAR(200) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

INSERT INTO `user` VALUES ('1', 'summer', '100', 'shanghai,pudong');

接下来开始配置MyBatis项目。

MyBatis项目配置:

1. 在MyBatis中创建两个源码目录:src_user和test_src。

2. 设置MyBatis配置文件:Configuration.xml,内容如下:


  
    
      
      
        
        
        
        
      
    
  
  
    
  

  1. 创建对应的Java类及映射文件。在src_user目录下创建package:com.yihaomen.mybatis.model,并创建User类:
package com.yihaomen.mybatis.model;

public class User {
 private int id;
 private String userName;
 private String userAge;
 private String userAddress;

 public int getId() { return id; }
 public void setId(int id) { this.id = id; }
 public String getUserName() { return userName; }
 public void setUserName(String userName) { this.userName = userName; }
 public String getUserAge() { return userAge; }
 public void setUserAge(String userAge) { this.userAge = userAge; }
 public String getUserAddress() { return userAddress; }
 public void setUserAddress(String userAddress) { this.userAddress = userAddress; }
}

同时创建User的映射文件User.xml:

<select id="selectUserByID" parametertype="int" resulttype="com.yihaomen.mybatis.model.User">
  SELECT * FROM `user` WHERE id = #{id}
</select>

测试配置:

在test_src目录下创建package:com.yihaomen.test,并创建测试类Test:

package com.yihaomen.test;

import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.yihaomen.mybatis.model.User;

public class Test {
 private static SqlSessionFactory sqlSessionFactory;
 private static Reader reader;

 static {
 try {
  reader = Resources.getResourceAsReader("Configuration.xml");
  sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
 } catch (Exception e) {
  e.printStackTrace();
 }
 }

 public static SqlSessionFactory getSession() {
  return sqlSessionFactory;
 }

 public static void main(String[] args) {
  SqlSession session = sqlSessionFactory.openSession();
  try {
   User user = (User) session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID", 1);
   System.out.println(user.getUserAddress());
   System.out.println(user.getUserName());
  } finally {
   session.close();
  }
 }
}

运行该程序,可以得到查询结果,说明环境配置成功。接下来将讲述基于接口的操作方式,实现数据的增删改查。

rar 文件大小:19.18MB