Mybatis

2023-01-28  本文已影响0人  Zeppelin421

[官网] https://mybatis.org/mybatis-3/zh/index.html

简介

MyBatis 是一款优秀的基于 ORM 的半自动轻量级持久层框架,它支持定制化SQL、存储过程以及高级映射。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型,将接口和 Java 的 POJO (Plain Old Java Objects,普通老式Java对象)映射成数据库中的记录。

历史

Mybatis 本是 Apache 的一个开源项目 iBatis,2010年6月这个项目由 Apache Software Foundation 迁移到了Google Code,随着开发团队转投 Google Code 旗下,ibatis3.x 正式更名为 Mybatis,代码于2013年11月迁移到 Github。

iBATIS 一词来源于 “internet” 和 “abatis” 的组合,是一个基于 Java 的持久层框架。iBATIS 提供的持久层框架包括 SQL Maps 和 Data Access Objects(DAO)

基本应用

构建 SqlSessionFactory
// BlogMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
    <select id="selectBlog" resultType="Blog">
        select * from Blog where id = #{id}
    </select>
</mapper>

// mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>
private SqlSessionFactory buildSqlSessionFactoryFromXml(String resourcePath) throws IOException {
    InputStream inputStream = Resources.getResourceAsStream(resourcePath);
    return new SqlSessionFactoryBuilder().build(inputStream);
}
private SqlSessionFactory buildSqlSessionFactory() {
    DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
    TransactionFactory transactionFactory = new JdbcTransactionFactory();
    Environment environment = new Environment("development", transactionFactory, dataSource);
    Configuration configuration = new Configuration(environment);
    configuration.addMapper(BlogMapper.class);
    return new SqlSessionFactoryBuilder().build(configuration);
}
获取 SqlSession

SqlSession 提供了在数据库执行 SQL 命令所需的所有方法

SqlSession sqlSession = sqlSessionFactory.openSession();
Blog blog = (Blog) sqlSession.selectOne("org.mybatis.example.BlogMapper.selectBlog", 1);
SqlSession sqlSession = sqlSessionFactory.openSession();
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(1);
作用域和生命周期

配置详解

Config 配置
Mapper 配置

深入理解

源码剖析
手动实现

上一篇下一篇

猜你喜欢

热点阅读