MyBatis实战教程
MyBatis目录:
- 开发环境搭建
- 以接口的方式编程
- 实现数据的增删改查
- 实现关联数据的查询
- 与Spring3集成(附源码)
- 与Spring MVC的集成
- MyBatis分页实现与源码下载
- MyBatis动态SQL语句
- MyBatis代码生成工具使用
- 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,都有以下共同点:
- 从配置文件(通常是XML文件)中得到SessionFactory。
- 由SessionFactory生成Session。
- 在Session中完成数据的增删改查和事务提交等操作。
- 使用完毕后关闭Session。
- 在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,内容如下:
- 创建对应的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();
}
}
}
运行该程序,可以得到查询结果,说明环境配置成功。接下来将讲述基于接口的操作方式,实现数据的增删改查。
评论区