MyBatis 是一个非常流行的 Java 持久层框架,它提供了简单的方法来处理数据库中的数据。MyBatis 可以看作是 JDBC 的一个薄封装,它简化了 JDBC 代码的编写,同时提供了强大的功能,如动态 SQL、映射自定义对象到数据库记录等。
SQL Mapper: MyBatis 使用 XML 或注解来映射 SQL 语句,这使得 SQL 语句可以与 Java 代码分离,便于管理和维护。
动态 SQL: MyBatis 支持动态 SQL,这意味着 SQL 语句可以根据条件动态地构建,提高了代码的复用性。
高级映射: MyBatis 支持将数据库列映射到 Java 对象的属性,包括但不限于简单类型、自动增长的主键、关联查询等。
配置简单: MyBatis 的配置相对简单,通过 XML 文件或注解可以轻松配置数据源、事务管理器等。
事务支持: MyBatis 支持声明式事务和编程式事务,可以方便地管理数据库事务。
缓存机制: MyBatis 提供了一级缓存和二级缓存,可以显著提高数据访问的性能。
插件机制: MyBatis 允许开发者编写插件来拦截方法调用,实现自定义的功能,如分页、性能监控等。
Spring 集成: MyBatis 可以很容易地与 Spring 框架集成,利用 Spring 的依赖注入和事务管理。
MyBatis-Spring 框架: 这是 MyBatis 和 Spring 的整合版本,提供了额外的集成特性,如自动 SQL 映射和事务管理。
MyBatis Plus: 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
首先,需要在 mybatis-config.xml
中配置 MyBatis 的基本设置:
定义一个接口,该接口中的方法将与 SQL 语句映射:
public interface BlogMapper {
Blog selectBlog(int id);
List selectAllBlogs();
}
创建 XML 文件,定义 SQL 语句和映射规则:
在应用程序中使用 MyBatis 的 SqlSessionFactory
和 Mapper
接口进行数据库操作:
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.util.List;
public class MyBatisExample {
public static void main(String[] args) throws Exception {
// 加载 MyBatis 配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 构建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建 SqlSession 实例
try (SqlSession session = sqlSessionFactory.openSession()) {
// 获取 Mapper 接口的实现
BlogMapper mapper = session.getMapper(BlogMapper.class);
// 调用 Mapper 接口中的方法
Blog blog = mapper.selectBlog(1);
System.out.println(blog.getAuthor());
List blogs = mapper.selectAllBlogs();
for (Blog blogItem : blogs) {
System.out.println(blogItem.getTitle());
}
}
}
}
在这个示例中,我们首先配置了 MyBatis,然后定义了一个 BlogMapper
接口,接着创建了一个 XML 文件来映射 SQL 语句。最后,在 main
方法中,我们创建了一个 SqlSession
实例,通过它获取了 BlogMapper
的实现,并调用了其中的方法来执行数据库操作。